今回は 「列名リストをConfigシートから読み込む版」 と 「統合結果を自動で別ブックに保存する版」 を紹介します。
1. 列名リストをConfigシートから読み込む版
Configシートに「抽出したい列名」を並べておき、それを読み込んで統合処理に使う汎用版です。
※ 各CSVの1行目をヘッダ行として扱い、列名を検索してコピーします。
Sub MergeCSV_ConfigColumns()
Dim folderPath As String, fileName As String
Dim wsMaster As Worksheet, wsConfig As Worksheet
Dim pasteRow As Long, lastRow As Long
Dim targetCols() As String
Dim i As Long, colCount As Long
folderPath = "C:\Data\CSV\" ' ←環境に合わせて変更
Set wsMaster = ThisWorkbook.Sheets("Master")
Set wsConfig = ThisWorkbook.Sheets("Config")
wsMaster.Cells.Clear
pasteRow = 1
' ConfigシートのA列に列名リストがあると仮定
colCount = wsConfig.Cells(wsConfig.Rows.Count, "A").End(xlUp).Row
ReDim targetCols(1 To colCount)
For i = 1 To colCount
targetCols(i) = wsConfig.Cells(i, "A").Value
Next i
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
' ヘッダ行から列位置を検索
Dim colIndex() As Long
ReDim colIndex(1 To colCount)
For i = 1 To colCount
colIndex(i) = Application.Match(targetCols(i), wsCSV.Rows(1), 0)
Next i
' ヘッダ行をコピー(最初のファイルのみ)
If pasteRow = 1 Then
For i = 1 To colCount
wsMaster.Cells(1, i).Value = targetCols(i)
Next i
pasteRow = 2
End If
' データ行をコピー
Dim r As Long
For r = 2 To lastRow
For i = 1 To colCount
wsMaster.Cells(pasteRow, i).Value = wsCSV.Cells(r, colIndex(i)).Value
Next i
pasteRow = pasteRow + 1
Next r
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "CSV統合完了!(Configシートの列名リスト使用)"
End Sub
VB2. 統合結果を自動で別ブックに保存する版
統合した結果を「Master」シートにまとめた後、新しいExcelブックに保存する例です。
Sub SaveMergedCSVtoNewWorkbook()
Dim wsMaster As Worksheet
Dim newWb As Workbook
Dim savePath As String
Set wsMaster = ThisWorkbook.Sheets("Master")
' 新しいブックを作成
Set newWb = Workbooks.Add
wsMaster.UsedRange.Copy newWb.Sheets(1).Cells(1, 1)
' 保存先パス(例: デスクトップ)
savePath = Environ("USERPROFILE") & "\Desktop\MergedResult.xlsx"
' 保存
Application.DisplayAlerts = False
newWb.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
newWb.Close SaveChanges:=False
MsgBox "統合結果を新しいブックに保存しました: " & savePath
End Sub
VB✅ まとめ
- Configシート版 → 列名リストを外部管理できるので、柔軟に列選択可能。
- 別ブック保存版 → 統合結果を自動で新しいファイルに保存できるので、配布やバックアップに便利。

