この記事では、指定されたフォルダ内の全Excelブックからシートを1つのブックに効率的にコピーする方法をExcel VBAを使って簡単に説明します。

指定フォルダ内の各ブックのシートを1つのブックにまとめたいんですが、どうしたらいいですか?



Excel VBAを使用して、その作業を自動化する方法がありますよ。
目次
サンプルプログラムの紹介と解説
このサンプルプログラムは、指定されたフォルダ内にある全てのExcelブックからシートを選択し、それらを新しいExcelブックにコピーするためのものです。
ここでは、基本的な操作から始め、Excel VBAでのファイル操作の基礎を学びます。
Sub シートを統合する()
Dim ws As Worksheet
Dim wbNew As Workbook
Set wbNew = Workbooks.Add
Dim folderPath As String
folderPath = "ここにフォルダのパスを入力" ' 指定フォルダのパス
Dim fileName As String
fileName = Dir(folderPath & "\*.xlsx", vbNormal)
While fileName <> ""
Dim wbOpen As Workbook
Set wbOpen = Workbooks.Open(folderPath & "\" & fileName)
For Each ws In wbOpen.Sheets
ws.Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
Next ws
wbOpen.Close False
fileName = Dir()
Wend
wbNew.SaveAs folderPath & "\統合されたワークブック.xlsx"
MsgBox "全てのシートが新しいワークブックにコピーされました。"
End Sub
解説:
Dim
キーワードは、変数の宣言に使用されます。ここではws
(ワークシート用)、wbNew
(新しいワークブック用)、folderPath
(フォルダパス用)、fileName
(ファイル名用)という変数を宣言しています。folderPath
には、シートを統合したいExcelファイルが保存されているフォルダのパスを指定します。Dir
関数は、指定されたパスのファイル名を取得します。ここでは*.xlsx
を使って、全てのExcelファイル(.xlsx形式)を指定しています。While
ループを使って、フォルダ内の全てのファイルを順番に開き(Workbooks.Open
)、その各シートを新しいワークブック(wbNew
)にコピーします(ws.Copy
)。wbOpen.Close False
は開いたファイルを保存せずに閉じるために使用されます。- 最後に、
wbNew.SaveAs
で新しいワークブックを指定したパスに保存し、MsgBox
で作業の完了を通知します。
このプログラムを使用することで、煩雑な手作業を減らし、複数のファイルからのデータ統合作業を効率的に行うことができます。
プログラムのカスタマイズや拡張により、さらに多様な作業を自動化することも可能です。
まとめ
指定されたフォルダ内の全Excelブックからシートを1つのブックに効率的にコピーする方法を解説しました。
- 指定フォルダ内の全Excelブックからシートを選択し、新しいワークブックにコピーするためのVBAスクリプトを紹介。
- スクリプトは、フォルダパス内の全.xlsxファイルを検索し、それらの全シートを新規ワークブックにコピーします。
- コピーが完了した後、新しいワークブックは指定されたパスに保存され、ユーザーに完了メッセージが表示されます。



Excel VBAは、日々の業務を効率化する強力なツールです。今回紹介したスクリプトは、煩雑なデータ統合作業を自動化し、大幅な時間節約につながります。
このプログラムを起点にして、さらに学習を深め、自分の業務に合わせたカスタマイズを行うことをお勧めします。