複数ファイルを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
コピー元フォルダをソースに直接記載していますが、利用者に指定させたい場合は、以下記事を参照してください。
また、フォルダ直下のファイルだけではなくフォルダを再帰的に追いかけたい場合は、以下記事を参照してください。