多个EXCEL文件的工作表合并到一个EXCEL文件

作者:小胖吴 | 创建时间: 2023-04-13
工作和生活中,总是遇到需要从多个EXCEL文件提取表,合并在一个EXCEL文件中。手动操太麻烦,这里用VBA代码就能一键实现,操作简单且准确无误。...
多个EXCEL文件的工作表合并到一个EXCEL文件

操作方法

将需要合并的EXCEL文件与目的EXCEL文件放在一个文件夹下。A文件、B文件、C文件为需要合并的EXCEL文件,再在这个文件夹下创建一个EXCEL文件:HB.xlsx,作为合并文件。如图所示。

打开HB.xlsx,将“开发工具”菜单加载到EXCEL菜单下。首先右键点击菜单空白处,选择“自定义功能区”,在弹出的对话框里选择主选项卡。然后勾选“开发工具”。如图所示。

制作导入键。点击“开发工具”菜单,选择“插入”--“Activex”控件下的命令按键。在工作表中画一个命令按钮。如图所示。

单击“开发工具”下的“设计模式”,再双击刚刚创建的命令按钮“CommandButton1”,进入代码编辑框。如图所示。

将以下代码全部复制到代码框中。(注意:要将代码框中已存在的 “Private Sub CommandButton1_Click()“和”End Sub”这两行语句删除掉再粘贴) Private Sub CommandButton1_Click() Dim path           As String Dim FileName       As String Dim LastCell       As Range Dim Wkb            As Workbook Dim WS             As Worksheet Dim ThisWB         As String Dim MyDir As String MyDir = ThisWorkbook.path & "\" 'ChDriveLeft(MyDir, 1) 'find all the excel files 'ChDir MyDir 'Match =Dir$("") ThisWB = ThisWorkbook.Name Application.EnableEvents = False Application.ScreenUpdating = False path = MyDir FileName = Dir(path & "\*.xlsx", vbNormal) Do Until FileName = "" If FileName <> ThisWB Then Set Wkb = Workbooks.Open(FileName:=path & "\" & FileName) For Each WS In Wkb.Worksheets Set LastCell = WS.Cells.SpecialCells(xlCellTypeLastCell) If LastCell.Value = "" And LastCell.Address = Range("$A$1").Address Then Else WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) End If Next WS Wkb.Close False End If FileName = Dir() Loop Application.EnableEvents = True Application.ScreenUpdating = True Set Wkb = Nothing Set LastCell = Nothing End Sub 如图所示。

将HB文件保存成启用宏的工作簿。关闭当前代码框,回到EXCEL界面。选择“文件”--“另存为”--“保存类型”下选择“启用宏的工作簿”,OK。

打开HB.xlsm,单击按钮。则几个需要合并的EXCEL文件中的工作表A,B,C合并到了HB.xlsm这个文件中。如图所示。

温馨提示

只能合并每个EXCEL文件中的非空工作表,且工作表不能被保护。
点击展开全文

更多推荐