エクセルでCSVの更新データをフォーマットに自動コピペする方法

エクセル

あなたは定期的に更新されるCSVデータを毎回エクセルのフォーマットにコピペするのが面倒だと思ったことはありませんか?

仕掛商品の製造状況更新や、案件の進捗確認など、毎週更新しているリストがCSVで提供される場合、毎回エクセルの表にコピペするのは大変ですよね。

表が1枚ならいいですが、5枚、10枚と増えてくると、1枚1分で終わるものでも、結構時間を取られます。

エクセルのマクロを使えば、CSVの更新データをエクセルのフォーマットに自動でコピペできます。

今回は「エクセルでCSVの更新データをフォーマットに自動コピペする方法」を紹介します。

エクセルでCSVの更新データをフォーマットに自動コピペする方法

エクセルでCSVの更新データをフォーマットに自動コピペする方法です。

これが貼付したいCSVデータです。

白黒で色がなく、行や数字が見づらいです。

エクセルのテーブル等にすると、見出しや行の色が変わるので、見やすいですよね。

今回は、下のように、左側のSCVデータを、右側のエクセルフォーマットに、データだけを貼り付けし、貼付けしたものをを名前を付けて保存するのを例に紹介します。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力

コードを入力します。

新しいエクセルを開き、元の古いエクセルデータをコピペし、CSVデータの値のみを貼付けし、新しいエクセルを保存する、という意味です。

赤枠部のコードです。

    Dim wbSource As Workbook
    Dim wbNew As Workbook
    Dim wsSource As Worksheet
    Dim wsNew As Worksheet
    Dim rngSource As Range
    Dim FileName As String
    Dim FolderPath As String
    Dim NewFileName As String
    Dim desktopPath As String
    
    ' 元のエクセルファイル「3.xlsx」を取得
    Set wbSource = ThisWorkbook
    Set wsSource = wbSource.Sheets(1) ' 目的のシートを設定
    
    ' 新しいエクセルデータ「2」を作成して開く
    Set wbNew = Workbooks.Add
    Set wsNew = wbNew.Sheets(1)
    
    ' エクセル「3」のA1:G13をそのままコピペする
    Set rngSource = wsSource.Range("A1:G13")
    rngSource.Copy Destination:=wsNew.Range("A1")
    
    ' デスクトップパスを取得
    desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    
    ' 「1.xlsx」という名前のファイルを開く
    FileName = desktopPath & "\1.xlsx"
    
    ' ファイルが存在しない場合のエラーハンドリング
    If Dir(FileName) = "" Then
        MsgBox "デスクトップ上に「1.xlsx」ファイルが見つかりません。", vbExclamation
        Exit Sub
    End If
    
    ' 「1.xlsx」ファイルを開く
    Dim wb1 As Workbook
    Dim ws1 As Worksheet
    Set wb1 = Workbooks.Open(FileName)
    Set ws1 = wb1.Sheets(1) ' 必要に応じてシート名を調整
    
    ' コピーするセル範囲を指定(例:A1:G13)
    Set rngSource = ws1.Range("A1:G13")
    
    ' コピーしてデータのみ貼り付ける
    rngSource.Copy
    wsNew.Range("A1").PasteSpecial Paste:=xlPasteValues
    
    ' ソースファイルを閉じる
    wb1.Close False
    
    ' 保存するフォルダパスを取得
    FolderPath = ThisWorkbook.Path
    NewFileName = FolderPath & "\" & "新しいファイル_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsx"
    
    ' 新しいファイルとして保存
    Application.DisplayAlerts = False ' 警告メッセージを無効化
    wbNew.SaveAs NewFileName, FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True ' 警告メッセージを再有効化
    
    ' 保存完了メッセージ
    MsgBox "ファイルが保存されました:" & NewFileName, vbInformation
    
    ' 新しいブックを閉じる
    wbNew.Close

コードを入力したら、コードの入力画面を閉じて下さい。

5.ボタンができた →ボタンをクリック

ボタンができたら、ボタンをクリックします。

6.データの貼付けが完了

新しいエクセルファイルに表のフォーマット、データの値が貼付けできました。

新しいファイルで保存されているので、そのままメールなどで共有できます。

これで、定期的なCSVデータの更新も簡単ですね!

まとめ

エクセルでCSVの更新データをフォーマットに自動コピペする方法のまとめです。

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.新規作成をクリック

3.コードを入れる画面が出る

4.コードを入力

5.ボタンができた →ボタンをクリック

6.データの貼付けが完了

これでCSVデータを定期的にエクセルに貼り付けるのが楽になりますね!

CSVデータが貼付けできたら、次は集計とグラフ化ですね。
集計とグラフ化も以外と面倒なので、自動化しましょう!
下のリンク先へどうぞ!

→エクセルで表の集計とグラフ化を自動化するボタンを作る方法

コメント

タイトルとURLをコピーしました