【エクセルマクロ】日付別にCSVを分けて作成:今すぐデキる!

エクセルマクロ:CSV出力 項目別にファイルを分けるアイキャッチ ExcelVBA

エクセルマクロで、日付別にCSVを出力するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

日付別にCSVを分けて出力

以下のマクロを実行すると、CSVデータを日付ごとに出力します。


Sub 日付別のCSVを作成()

Dim MyPath As String
Dim myDic As Object
Dim myKey As Variant
Dim myList As Variant
Dim i As Long
Dim Q As Long
Dim Paste_Cnt As Long

    'CSVの保存先
    MyPath = ActiveWorkbook.Path
    
    Set myDic = CreateObject("Scripting.Dictionary")

    'データを配列に格納
    myList = Range(Cells(2, 1), Cells(21, 3))

    '重複しない日付を取得
    For i = 1 To UBound(myList, 1)
       If Not myDic.exists(myList(i, 2)) Then
          myDic.Add Key:=myList(i, 2), Item:=myList(i, 2)
       End If
    Next

    '重複しない日付を格納
    myKey = myDic.keys

    '日付ごとにループ
    Paste_Cnt = 1
    For i = 0 To UBound(myKey)
    
      '新規ファイル作成
      Workbooks.Add
    
      '新規ファイルにデータ転記
      For Q = 1 To UBound(myList)
    
          If myList(Q, 2) = myKey(i) Then
    
              With ActiveSheet
                 .Cells(Paste_Cnt, 1) = myList(Q, 1)
                 .Cells(Paste_Cnt, 2) = Format(myList(Q, 2), "yyyy/mm/dd")
                 .Cells(Paste_Cnt, 2).NumberFormatLocal = "yyyy/mm/dd"
                 .Cells(Paste_Cnt, 3) = myList(Q, 3)
              End With
    
              Paste_Cnt = Paste_Cnt + 1
    
          End If
      Next Q
    
      'CSV作成
      ActiveWorkbook.SaveAs Filename:= _
      MyPath & "\" & Format(myKey(i), "yyyymmdd"), FileFormat:=xlCSV, Local:=True
    
      'CSVを閉じる
      Application.DisplayAlerts = False
         ActiveWorkbook.Close True
      Application.DisplayAlerts = True
    Next i
    
    '開放
    Set myDic = Nothing

End Sub

マクロ実行前

B列の日付ごとにデータを分けて、CSVを作成したいと思います。


 

マクロ実行後

自動出力したCSVファイルです。

ファイル名は該当の日付から付けています。


 

出力したCSVファイルの中身は下図の通りです。

日付ごとにデータが分かれています。


 
 
 

CSVの日付が逆になってしまう対策

CSVファイルを作成した際に、

日付の表示形式が逆になってしまう現象が発生しました。


 

以下コードを追加して表示形式を指定することで、解決できました!
※上でご紹介しているコードに含まれています。
[.Cells(Paste_Cnt, 2).NumberFormatLocal = “yyyy/mm/dd”]

この記事がお役に立ちますと幸いです。
 

・【エクセルマクロ】CSV処理を自動化まとめ
 

【エクセルマクロ】CSV処理を自動化:超便利10選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説