CSV統合のさらに応用版テンプレート
今回は 「統合時に日付やタイムスタンプを列に追加する版」 と 「特定の列だけ抽出して統合する版」 を紹介します。
1. 統合時に日付やタイムスタンプを列に追加する版
CSVを統合するときに、処理日時(タイムスタンプ) を列として追加しておくと、後から「いつ統合したデータか」を追跡できます。
Sub MergeCSV_AddTimestamp()
Dim folderPath As String, fileName As String
Dim wsMaster As Worksheet
Dim pasteRow As Long, lastRow As Long
Dim ts As String
folderPath = "C:\Data\CSV\" ' ←環境に合わせて変更
Set wsMaster = ThisWorkbook.Sheets("Master")
wsMaster.Cells.Clear
pasteRow = 1
ts = Format(Now, "yyyy-mm-dd HH:NN:SS") ' 現在日時
fileName = Dir(folderPath & "*.csv")
Do While fileName <> ""
Dim wbCSV As Workbook, wsCSV As Worksheet
Set wbCSV = Workbooks.Open(folderPath & fileName)
Set wsCSV = wbCSV.Sheets(1)
lastRow = wsCSV.Cells(wsCSV.Rows.Count, 1).End(xlUp).Row
' データコピー
wsCSV.Range("A1:A" & lastRow).EntireRow.Copy wsMaster.Cells(pasteRow, 1)
' タイムスタンプ列を追加
Dim copiedRows As Long
copiedRows = lastRow
wsMaster.Range(wsMaster.Cells(pasteRow, wsMaster.Cells(pasteRow, 1).End(xlToRight).Column + 1), _
wsMaster.Cells(pasteRow + copiedRows - 1, wsMaster.Cells(pasteRow, 1).End(xlToRight).Column + 1)).Value = ts
pasteRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 1
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "CSV統合完了!(タイムスタンプ列付き)"
End Sub
VB2. 特定の列だけ抽出して統合する版
CSVの中から 必要な列だけ抽出 して統合する例です。例えば「A列(ID)とC列(値)」だけを統合する場合。
Sub MergeCSV_SelectedColumns()
Dim folderPath As String, fileName As String
Dim wsMaster As Worksheet
Dim pasteRow As Long, lastRow As Long
folderPath = "C:\Data\CSV\" ' ←環境に合わせて変更
Set wsMaster = ThisWorkbook.Sheets("Master")
wsMaster.Cells.Clear
pasteRow = 1
fileName = Dir(folderPath & "*.csv")
Do While fileName <> ""
Dim wbCSV As Workbook, wsCSV As Worksheet
Set wbCSV = Workbooks.Open(folderPath & fileName)
Set wsCSV = wbCSV.Sheets(1)
lastRow = wsCSV.Cells(wsCSV.Rows.Count, 1).End(xlUp).Row
' 特定列(例: A列とC列)だけコピー
wsMaster.Range("A" & pasteRow & ":A" & pasteRow + lastRow - 1).Value = wsCSV.Range("A1:A" & lastRow).Value
wsMaster.Range("B" & pasteRow & ":B" & pasteRow + lastRow - 1).Value = wsCSV.Range("C1:C" & lastRow).Value
pasteRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 1
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "CSV統合完了!(特定列のみ抽出)"
End Sub
VB✅ まとめ
- タイムスタンプ列追加版 → 統合日時を記録できるので、データの鮮度管理に便利。
- 特定列抽出版 → 必要な列だけを統合できるので、不要データを省いて効率化。

