フォルダの中のデータを統合し、処理済みフォルダに移動するマクロ



マクロが入ってるエクセルと同じフォルダにある

【操作用フォルダ】の中のエクセルを開いて

データを統合して

【処理済フォルダ】に移動させるマクロ

五月雨式にファイルが追加される場合などにその都度処理ができて便利。

下準備

マクロが入ってるエクセルと同じフォルダに【操作用フォルダ】と【処理済フォルダ】を作成する。
【操作用フォルダ】の中に、操作したいファイルを入れる。

アクティブシートにタイトル行を挿入しておく。

コード

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
        '処理済みフォルダへ移動する
        Name Path & FileName As ThisWorkbook.Path & "\" & "処理済フォルダ" & "\" & FileName
        'ファイルを再取得
        FileName = Dir
        
    '繰り返し
    Loop
    
    MsgBox "データ統合完了"
End Sub

注意点

  • コピーする列数は任意のものに修正すること。上記コードは7列目までコピーするコード。
  • 処理済フォルダに同じ名前のファイルがある場合はエラーになる。