Joyは、かなりの数のワークブックをマージする際に問題に遭遇しました。ワークブックの大部分(約200冊、すべて1つのフォルダーにあります)には、それぞれ1つのワークシートが含まれていますが、それ以上のワークシートが含まれているものもあります。これらの各ワークブックを形成するワークシートは、単一のワークブックに追加する必要があります。

この規模のマージを行う最も簡単な方法は、特に頻繁に行う必要がある場合は、マクロを使用することです。次のマクロは、マージするファイルを選択するように求めるダイアログボックスを表示します。 (Ctrlキーを押しながら各ワークブックをクリックすると、複数のワークブックを選択できます。)選択したリストをループし、各ワークシートを開いて、すべてのワークシートをコードとともにワークブックの最後に移動します。

Sub CombineWorkbooks()

Dim FilesToOpen     Dim x As Integer     Dim Outwbk As Workbook

Set Outwbk = ActiveWorkbook

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 "No Files were selected"

GoTo ExitHandler     End If

x = 1     While x <= UBound(FilesToOpen)

Workbooks.Open Filename:=FilesToOpen(x)

Sheets().Move After:=Outwbk.Sheets(Outwbk.Sheets.Count)

x = x + 1     Wend

ExitHandler:

Application.ScreenUpdating = True     Exit Sub

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

ワークシートをブックの最後に追加する過程で、重複するワークシート名が検出されると、Excelは自動的に(2)、(3)などを追加します。他のシートを参照している本の数式も、新しい名前を反映するように更新されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2409)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。