ファイルごとに分かれたエクセルのリストデータを一つのシートに統合するマクロ


フォルダの中にある複数のエクセルファイルを開いて



一つのシートに統合してリストを作るマクロ

コード

Sub データ統合()
    Dim Path As String
    Dim FileName As String
    Dim DataNumber As Long
    Dim RowsCount As Long
    Dim WS As Worksheet
    
    'マクロエクセルが保存されているフォルダのパスを取得
    Path = ThisWorkbook.Path & "\"
    
    'フォルダの中で拡張子がxlsxのファイルを取得
    FileName = Dir(Path & "*.xlsx")
    
    'アクティブシートを統合先に設定する
    Set WS = ActiveSheet
    
    '繰り返し処理
    Do While FileName <> ""
        
        'フォルダ内のエクセルを開く
        Workbooks.Open Path & FileName
        '開いた統合元のエクセルのデータ数を取得
        DataNumber = Range("A1").CurrentRegion.Rows.Count - 1
        '統合先の行数を取得
        RowsCount = WS.Range("A1").CurrentRegion.Rows.Count + 1
        '開いた統合元のエクセルシートをコピーして統合先に貼り付け
        '7列目までコピーする場合
        Range("A2").Resize(DataNumber, 7).Copy Destination:=WS.Cells(RowsCount, 1)
        'ファイルを閉じる
        ActiveWorkbook.Close
        'ファイルを再取得
        FileName = Dir
        
    '繰り返し
    Loop
End Sub

下準備

上記のコードは7列目までコピーする場合。列番号は適宜修正すること。
マクロが入ってるフォルダと同じフォルダに統合したいファイルを置く。
アクティブシートに統合データが集まるので、一番上の行にタイトル行を入れておくとよい。

意図した順番に並べたい場合は、統合したいファイルの名前の先頭にい数字を入れて任意の並び順にしておく。

そうするとファイルの並び順どおりに統合されるはず。