複数の CSV ファイルを 1 つの Excel ワークブックにまとめたいときの VBA マクロ設計例 を紹介します。これを使えば「フォルダ内の全 CSV を順番に読み込み → 1 枚のシートに統合」できます。
処理の流れ
- 対象フォルダを指定
→Dir関数で CSV ファイルを順番に取得。 - CSV を開いて読み込み
→Workbooks.Openで開き、内容をコピー。 - 統合シートに貼り付け
→ 1 枚のシートに順次追加。ファイル名や区切り行を入れると便利。 - 閉じる
→ 読み込んだ CSV は閉じる。
VBA コード例
Sub MergeCSVtoExcel()
Dim folderPath As String
Dim fileName As String
Dim wsMaster As Worksheet
Dim lastRow As Long, pasteRow As Long
' 統合先シートを準備
Set wsMaster = ThisWorkbook.Sheets("Master")
wsMaster.Cells.Clear
pasteRow = 1
' フォルダパスを指定(例: C:\Data\CSV)
folderPath = "C:\Data\CSV\"
' 最初の CSV ファイルを取得
fileName = Dir(folderPath & "*.csv")
Do While fileName <> ""
Dim wbCSV As Workbook
Dim wsCSV As Worksheet
' CSV を開く
Set wbCSV = Workbooks.Open(folderPath & fileName)
Set wsCSV = wbCSV.Sheets(1)
' CSV の最終行を取得
lastRow = wsCSV.Cells(wsCSV.Rows.Count, 1).End(xlUp).Row
' ファイル名を見出しとして挿入
wsMaster.Cells(pasteRow, 1).Value = "File: " & fileName
pasteRow = pasteRow + 1
' データをコピー
wsCSV.Range("A1:A" & lastRow).EntireRow.Copy _
wsMaster.Cells(pasteRow, 1)
' 次の貼り付け位置を更新
pasteRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 2
' CSV を閉じる
wbCSV.Close SaveChanges:=False
' 次のファイルへ
fileName = Dir
Loop
MsgBox "CSV統合完了!", vbInformation
End Sub
VBポイント
- フォルダパスは環境に合わせて変更してください。
- 見出し行の扱い
- 各 CSV にヘッダがある場合、最初のファイルだけコピーし、以降はヘッダを除外すると良い。
- ファイル名を残す
- 統合後に「どのデータがどのファイル由来か」分かるように、ファイル名を挿入しておくと便利。
- 大量データ対応
- 数万行規模なら
CopyよりValue代入の方が高速。
- 数万行規模なら
✅ 応用アイデア
- シート分割版: 各 CSV を別シートに展開。
- 自動化: Windows タスクスケジューラで Excel を起動し、毎日自動統合。
- ログ出力: 統合したファイル名一覧を別シートに記録。

