乔伊遇到了一个问题,将许多工作簿合并在一起。大多数工作簿(其中约200个,都在一个文件夹中)每个都包含一个工作表,但有些包含更多。构成每个工作簿的工作表都需要添加到单个工作簿中。

进行这种规模的合并的最简单方法(特别是如果您必须经常进行合并)是使用宏。下面的宏显示一个对话框,要求您选择要合并的文件。 (您可以在单击每个工作簿时按住Ctrl键来选择多个工作簿。)它循环遍历您选择的列表,打开每个工作簿并将其所有工作表随代码一起移到工作簿的末尾。

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

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将自动附加(2),(3)等。本书中引用其他表格的所有公式也将更新,以反映新名称。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12652)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: