ここでは 複数ブックにまたがって条件付きで特定のシートを統合(まとめる) VBAの例を紹介します。ポイントは「複数のブックをループし、条件に合致するシートをコピーして1つの統合ブックにまとめる」ことです。
⚠️ 注意:統合処理は元に戻せないため、必ずバックアップを取ってから実行してください。
基本例:シート名が「Data」で始まるシートを統合
Sub 複数ブックでシート統合()
Dim wb As Workbook
Dim ws As Worksheet
Dim destWb As Workbook
' 統合先ブックを指定(事前に開いておく)
Set destWb = Workbooks("Master.xlsx")
For Each wb In Application.Workbooks
' 統合先ブックとこのコードを含むブックは除外
If wb.Name <> ThisWorkbook.Name And wb.Name <> destWb.Name Then
For Each ws In wb.Worksheets
' 条件:シート名が「Data」で始まる
If Left(ws.Name, 4) = "Data" Then
' 統合先ブックの末尾にコピー
ws.Copy After:=destWb.Sheets(destWb.Sheets.Count)
End If
Next ws
End If
Next wb
End Sub
VB👉 開いているすべてのブックから「Data」で始まるシートを「Master.xlsx」にまとめます。
応用例1:セルの値で判定して統合
Sub セルの値でシート統合()
Dim wb As Workbook
Dim ws As Worksheet
Dim destWb As Workbook
Set destWb = Workbooks("Master.xlsx")
For Each wb In Application.Workbooks
If wb.Name <> ThisWorkbook.Name And wb.Name <> destWb.Name Then
For Each ws In wb.Worksheets
' A1セルが「統合」と書かれていたらコピー
If ws.Range("A1").Value = "統合" Then
ws.Copy After:=destWb.Sheets(destWb.Sheets.Count)
End If
Next ws
End If
Next wb
End Sub
VB👉 各シートのA1セルに「統合」と書いてある場合のみ、そのシートを統合ブックにコピーします。
応用例2:複数条件を組み合わせて統合
Sub 複数条件でシート統合()
Dim wb As Workbook
Dim ws As Worksheet
Dim destWb As Workbook
Set destWb = Workbooks("Master.xlsx")
For Each wb In Application.Workbooks
If wb.Name <> ThisWorkbook.Name And wb.Name <> destWb.Name Then
For Each ws In wb.Worksheets
' 条件1: シート名が「Report」で始まる
' 条件2: B2セルの値が100以上
If Left(ws.Name, 6) = "Report" And ws.Range("B2").Value >= 100 Then
ws.Copy After:=destWb.Sheets(destWb.Sheets.Count)
End If
Next ws
End If
Next wb
End Sub
VB👉 シート名が「Report」で始まり、かつB2セルの値が100以上なら、そのシートを統合ブックにコピーします。
ポイント
- シートコピー →
ws.Copy After:=destWb.Sheets(destWb.Sheets.Count) - 統合先ブックを指定 →
Set destWb = Workbooks("Master.xlsx") - 複数ブックをループ →
For Each wb In Application.Workbooks - 条件判定 → シート名やセルの値を使って柔軟に設定
練習課題
- 全ブックの「Sheet2」を統合ブックにまとめるコードを書いてみる
- 各シートのC1セルが「Merge」と書かれていたら統合するコードを作る
- 複数条件を組み合わせて「シート名がDataで始まり、A1セルが空でないなら統合」にするコードを作る
こうした仕組みを作ると、複数ブックにまたがって条件付きで特定のシートを統合する自動化ツールが完成します。

