見出し画像

複数のブックの表を1枚にまとめるVBA

VBA

Dim 主ブック As Workbook
Dim ファイル名 As Variant
Dim ファイル As String
Dim ブック As Workbook
Dim シート As Worksheet
Dim 最終行 As Long
' 新しいブックを作成
Set 主ブック = Workbooks.Add

' ファイルの選択
ファイル名 = Application.GetOpenFilename(FileFilter:="Excelファイル (*.xls; *.xlsx), *.xls; *.xlsx", Title:="ブックを選択してください", MultiSelect:=True)

' キャンセルがクリックされた場合は終了
If VarType(ファイル名) = vbBoolean Then
    If ファイル名 = False Then
        Exit Sub
    End If
End If

' 選択された各ブックからデータを取得
For i = LBound(ファイル名) To UBound(ファイル名)
    ファイル = ファイル名(i)
    Set ブック = Workbooks.Open(ファイル)

    ' 最終行を取得
    最終行 = ブック.Sheets(1).Cells(ブック.Sheets(1).Rows.Count, "A").End(xlUp).Row

    ' データを主ブックにコピー
    ブック.Sheets(1).Range("A1:Z" & 最終行).Copy 主ブック.Sheets(1).Cells(主ブック.Sheets(1).Rows.Count, "A").End(xlUp).Offset(1)

    ' ブックを閉じる
    ブック.Close SaveChanges:=False
Next i
End Sub

実行方法

VBAコードを実行する手順

  1. VBAエディタを開く:

    • Excelを開いたら、Alt + F11を押してVBAエディタを開きます。

  2. 新しいモジュールを挿入:

    • VBAエディタ内で、[挿入]メニューから「モジュール」を選択して新しいモジュールを挿入します。

  3. コードを貼り付ける:

    • 新しく作成されたモジュールに、上記で提供されたVBAコードをコピーして貼り付けます。

  4. 実行:

    • VBAエディタを閉じてExcelに戻ります。

    • Alt + F8を押して、[マクロ]ダイアログボックスを開きます。

    • "結合マクロ"またはコード内で指定したマクロ名を選択し、[実行]ボタンをクリックします。

  5. ファイルを選択:

    • マクロが実行されると、ファイルを選択するためのダイアログボックスが表示されます。結合したいExcelファイルを選択して[OK]ボタンをクリックします。

  6. 処理の確認:

    • マクロは各選択されたブックからデータを取得して、新しいブックに追加します。

メモ

ChatGTP3.5で3回ほど作り直してもらって成功。
まとめられるのは各ブックの1枚目のシートのみ。
月間精算書の年間まとめなどに使う。


この記事が気に入ったらサポートをしてみませんか?