VBAで
・複数のCSVファイルを
・1つのCSVファイルに纏める方法
を紹介します!
※複数のCSVファイルを結合する方法です。
各CSVファイルに見出し行があっても、
上手いこと1つのCSVファイルに纏める方法です!
なお
・複数のCSVファイルを
・1つのシートに纏める方法
は、以下の記事をご確認ください。
VBAコード
ここでは例として、
・デスクトップ配下のフォルダ「test」配下にある
・全てのCSVファイルを
・1つのCSVファイルに纏める方法
を紹介します。
Option Explicit
Sub sample()
Dim targetFolder As String
Dim outputFile As String
Dim fileCount As Long
Dim fso As Object
Dim file As Object
Dim tsoOutput As Object
Dim tsoInput As Object
'対象フォルダを指定
targetFolder = "C:\Users\user\Desktop\test"
'出力ファイルを指定
outputFile = "C:\Users\user\Desktop\merge.csv"
'処理したファイル数を示すのカウンタ変数
fileCount = 0
Set fso = CreateObject("Scripting.FileSystemObject")
'出力ファイルが存在したら削除(読み取り専用でも削除)
If fso.FileExists(outputFile) Then
fso.deleteFile outputFile, True
End If
'出力ファイルを作成
Set tsoOutput = fso.CreateTextFile(fileName:=outputFile)
'対象フォルダ配下のファイル数分繰り返し
For Each file In fso.getFolder(targetFolder).Files
'対象ファイル(拡張子)の場合のみ処理を行う
If LCase(fso.GetExtensionName(file.name)) = "csv" Then
'カウンタ変数をカウントアップ
fileCount = fileCount + 1
'対象ファイルを開く
Set tsoInput = fso.OpenTextFile(file.Path)
'1ファイル目でない場合は1行目(見出し行)をスキップする
If fileCount <> 1 Then
tsoInput.SkipLine
End If
'対象ファイルを出力ファイルへ出力する
tsoOutput.Write tsoInput.ReadAll
End If
Next
MsgBox ("複数のファイルを1つ纏めました。対象ファイル数:" & fileCount)
'後片付け
tsoOutput.Close
tsoInput.Close
Set fso = Nothing
End Sub
実行結果
複数のCSVファイルを1つのCSVファイルに纏めることができました。
見出し行も上手いことできました。
参考①
作成したCSVファイルをシートへ読み込むこともできます。
※読み込み方法は4種類あります。
詳細は以下の記事をご確認ください。
参考②
バッチファイルでも複数のCSVファイルを1つのCSVファイルに纏めることができます。
詳細は以下の記事をご確認ください。
参考③
PowerShellでも複数のCSVファイルを1つのCSVファイルに纏めることができます。
詳細は以下の記事をご確認ください。
参考④
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「FileSystemObject」の「CreateTextFile」メソッド
●「FileSystemObject」の「getFolder」メソッド
●「Folderオブジェクト」の「Files」プロパティ
●「FileSystemObject」の「OpenTextFile」メソッド
●「TextStreamオブジェクト」の「SkipLine」メソッド
●「TextStreamオブジェクト」の「ReadAll」メソッド
●「TextStreamオブジェクト」の「Write」メソッド