場合によっては、異なる Excel ワークブックのシートを結合して、新しいレポートまたは統合データ ファイルを作成する必要があります。このような操作は、標準の MS Excel ツールを使用して手動で実行できますが、多大な時間と労力がかかる場合があります。このプロセスを自動化し、レポートの作業を高速化する方法を考えてみましょう。
たとえば、多数のワークブック Excel があり、すべてのワークブックのワークシートを 1 つのファイルに収集したいとします。これを行うには、すべてのシートを収集するブックを開き、次のマクロ コードを追加します。
すべてのシートを収集する開いているワークブック Excel で、Visual Basic Editor (Alt+F11) を開き、VBA モジュールを追加します (Insert - Module)このコード マクロをそこにコピーします。
Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "ファイルが選択されていません!" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open Filename:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
その後、Excel に戻り、メニュー Tools - Macro - Macros (Alt+F8) からマクロを実行できます。ダイアログ ボックスが表示され、現在のワークブックに追加するシートを 1 つ以上 (Ctrl キーを押しながら) 選択する必要があります。
別の Excel ファイル拡張子 (*.xlsx、*.xlsm、*.xlsb など) を使用する場合は、マクロのコードの 9 行目に適切な変更を加える必要があります。