【EXCEL VBA】複数ファイルを1ファイルにまとめたい(複数ブックを1ブックにまとめたい)

複数ファイルを1ファイルにまとめる方法を紹介します。シチュエーションとしては、個人毎に作成されたファイル(回答用紙や面談記録など)を1ファイルにする場合などを想定しています。

Sheets.Copyを使って解決する

コピー元SheetsオブジェクトのCopy関数をコールします。引数としてはコピー先のSheetsオブジェクトを指定します。AfterまたはBeforeで、前後どちらにコピーするかを指定します。

サンプルプログラムを確認する(コピペOK)

Option Explicit

Sub sample()
  Dim fso As FileSystemObject: Set fso = New FileSystemObject
  Dim f As file
  Dim srcWB As Workbook
  
  ' GetFolder(フォルダ名).Filesでフォルダ配下のファイル一覧を取得
  For Each f In fso.GetFolder("C:\temp").Files
  
    Set srcWB = Workbooks.Open(f.path)
    
    ' シートの最後にコピーする
    srcWB.Sheets(1).Copy After:=Worksheets(Worksheets.Count)
    
    srcWB.Close savechanges:=False
  
  Next

End Sub

コピー元フォルダをソースに直接記載していますが、利用者に指定させたい場合は、以下記事を参照してください。

また、フォルダ直下のファイルだけではなくフォルダを再帰的に追いかけたい場合は、以下記事を参照してください。