複数のエクセルファイルをマージする方法を書きました。自分がこれを使って作業が楽になったので共有します。
Public Sub fileMerge() Dim wb As Workbook Dim sh As Worksheet Dim rg(1) As Range '0=ThisWorkbook,1=OpenWorkbook Dim fName As Variant 'ファイル名称(配列) Dim fCount As Integer 'ファイル数 Dim endRow(1) As Long '0=ThisWorkbook,1=OpenWorkbook Dim i As Integer 'カレントディレクトリをブックのパスに指定する(※1必要ない場合は削除可) CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path '結合するファイルを選択する(Ctrl+クリックで複数ファイル選択可) fName = Application.GetOpenFilename("エクセルファル,*.xlsx", , "結合ファイル選択", , True) 'ファイルが選択されていない場合は、終了 If Not IsArray(fName) Then Exit Sub 'このブックの最終行を取得 UBound・・・配列の大きさを返す fCount = UBound(fName) 'ファイル数取得 'タイトル作成 Set sh = ThisWorkbook.Sheets("Sheet1") sh.Cells.Clear sh.Cells(1, 1).Value = "A" sh.Cells(1, 2).Value = "B" sh.Cells(1, 3).Value = "C" sh.Cells(1, 4).Value = "D" sh.Cells(1, 5).Value = "E" sh.Cells(1, 6).Value = "F" sh.Cells(1, 7).Value = "G" sh.Cells(1, 8).Value = "H" sh.Cells(1, 9).Value = "I" 'ファイル数だけループ処理 For i = 1 To fCount 'このブックの最終セルを取得 Set rg(0) = sh.Cells(Rows.Count, 1).End(xlUp).Offset(1) Set wb = Workbooks.Open(fName(i)) 'ファイルを開く With wb.Sheets("Sheet1") endRow(1) = .Cells(Rows.Count, 1).End(xlUp).Row '最終行取得 xlUPが最終行 '結合するセル範囲を取得 Set rg(1) = .Range(.Cells(2, 1), .Cells(endRow(1), 10)) '2行目から最終行のA~I列 End With 'コピー処理 rg(1).Copy rg(0) wb.Close Next i Set wb = Nothing Set sh = Nothing Erase rg Erase fName End Sub