複数のExcelファイルを一つにまとめる

複数Excelファイル(ブック)を一つのExcelファイルにまとめたい/結合したいということが稀にある。

1. 以下のマクロを登録したブックを用意する。
2. まとめたいExcelファイル(ブック)を同じフォルダ(ディレクトリ)に置く。
3. マクロを実行する。
4. 各Excelファイル(ブック)の全シートが一つのファイル(ブック)にコピーされる。

Sub 結合()
    Dim MergeBook As Workbook   '統合先ブック
    Dim CurrentBook As Workbook '作業するブック
    Dim CurrrentPath As String  '作業するフォルダのパス
    Dim Filename As String      '作業するファイル名のリスト
    Dim N As Integer            '対象ブック数のカウンタ
    
    Application.ScreenUpdating = False '画面更新を停止
    Set MergeBook = ThisWorkbook 'マクロ実行するブックを統合先ブックとする
    CurrentPath = MergeBook.Path
    Filename = Dir(CurrentPath & "\*.xls") 'フォルダ内のブック名を取得

    N = 0
    Do While Filename <> Empty
        If Filename <> MergeBook.Name Then '統合先ブックと異なるブック名であれば
            Set CurrentBook = Workbooks.Open(CurrentPath & "\" & Filename)
            CurrentBook.Worksheets.Copy After:=MergeBook.Sheets(MergeBook.Sheets.Count)
            CurrentBook.Close
            N = N + 1
        End If
        Filename = Dir 'フォルダ内の次のブック名を取得
    Loop

    Application.ScreenUpdating = True '画面更新を再開
    MsgBox N & "件のブックを処理しました。"
End Sub

いざという時のためにマクロ登録したブックを用意しとこ。