TOP

工作表集合

描述

有时我们需要合并不同 Excel 工作簿中的工作表来创建新的报告或合并数据文件。此类操作可以使用标准 MS Excel 工具手动完成,但这可能需要大量时间和精力。让我们考虑如何自动化此过程并加快报告的处理速度。

例如,我们有很多工作簿Excel,我们希望将所有工作簿中的工作表收集到一个文件中。为此,请打开要收集所有工作表的工作簿并添加以下宏代码。


VBA 宏代码

在要收集所有工作表的打开工作簿 Excel 中,打开 Visual Basic Editor (Alt+F11),添加 VBA module (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)运行我们的宏。将出现一个对话框,您需要在其中选择一个或多个(按住 Ctrl 键)文件,我们要将其工作表添加到当前工作簿中。

如果您使用不同的 Excel 文件扩展名(例如,*.xlsx、*.xlsm、*.xlsb 等),则需要对宏中的第九行代码进行适当的更改。

有关该主题的文章:

  • 对书中的工作表进行排序
  • 工作表之间快速切换