では「フォルダ内のCSV統合」の 応用版 を2種類紹介します。
1. ヘッダ行を1回だけコピーする版
複数CSVに同じヘッダがある場合、最初のファイルだけヘッダをコピーし、以降はデータ部分のみを統合します。
Sub MergeCSV_HeadersOnce()
Dim folderPath As String, fileName As String
Dim wsMaster As Worksheet
Dim pasteRow As Long, lastRow As Long
Dim isFirstFile As Boolean
folderPath = "C:\Data\CSV\" ' ←環境に合わせて変更
Set wsMaster = ThisWorkbook.Sheets("Master")
wsMaster.Cells.Clear
pasteRow = 1
isFirstFile = True
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
' ヘッダ行は最初のファイルだけコピー
If isFirstFile Then
wsCSV.Rows(1).Copy wsMaster.Rows(pasteRow)
pasteRow = pasteRow + 1
isFirstFile = False
End If
' データ部分(2行目以降)をコピー
wsCSV.Range("A2:A" & lastRow).EntireRow.Copy wsMaster.Rows(pasteRow)
pasteRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 1
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "CSV統合完了!(ヘッダは1回だけコピー)"
End Sub
VB2. 各CSVを別シートに展開する版
CSVごとに新しいシートを作成し、ファイル名をシート名にして展開します。
Sub ImportCSVtoSheets()
Dim folderPath As String, fileName As String
Dim wbCSV As Workbook, wsCSV As Worksheet
Dim newSheet As Worksheet
folderPath = "C:\Data\CSV\" ' ←環境に合わせて変更
fileName = Dir(folderPath & "*.csv")
Do While fileName <> ""
Set wbCSV = Workbooks.Open(folderPath & fileName)
Set wsCSV = wbCSV.Sheets(1)
' 新しいシートを作成し、ファイル名をシート名に
Set newSheet = ThisWorkbook.Sheets.Add
newSheet.Name = Left(fileName, InStrRev(fileName, ".") - 1)
' データをコピー
wsCSV.UsedRange.Copy newSheet.Cells(1, 1)
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "CSVを各シートに展開完了!"
End Sub
VB✅ まとめ
- ヘッダ行を1回だけコピー版 → 1枚のシートに全CSVを統合、ヘッダは最初だけ。
- 各CSVを別シート展開版 → ファイルごとにシートを作成、シート名=ファイル名。

