此示例是将不同路径下的工作簿的第一个工作表合并到同一个工作簿的不同sheet,按照添加顺序把工作表合并进去。 如果要合并多个或者是其他情况可参照更改下即可。
主要分两块内容:
1.第一块,代码块
2.第二块,演示
一、代码块
Sub NewTest()Dim book1 As String, book2 As String, flag1 As String, flag2 As StringApplication.DisplayAlerts = FalseApplication.ScreenUpdating = Falsearr = [a1].CurrentRegion' flag1 和flag2用于判断对应文件是否存在,存在才进行一步处理,ThisWorkbook.Path返回当前执行VBA'代码的工作簿的路径,可以直接指定路径,无论是读取还是存储皆可.For Each i In arrflag1 = Dir(ThisWorkbook.Path & "\test\testnew2\" & i & "-未超时.xlsx")flag2 = Dir(ThisWorkbook.Path & "\test\testnew\" & i & "-超时.xlsx")If flag1 <> "" ThenWorkbooks.Open (ThisWorkbook.Path & "\test\testnew2\" & i & "-未超时.xlsx")book1 = ActiveWorkbook.NameEnd IfIf flag2 <> "" ThenWorkbooks.Open (ThisWorkbook.Path & "\test\testnew\" & i & "-超时.xlsx")book2 = ActiveWorkbook.NameEnd IfIf flag1 <> "" Or flag2 <> "" ThenWorkbooks.AddIf flag1 <> "" And flag2 = "" ThenWorkbooks(book1).Sheets(1).Copy Before:=ActiveWorkbook.ActiveSheetEnd IfIf flag2 <> "" And flag1 = "" ThenWorkbooks(book2).Sheets(1).Copy Before:=ActiveWorkbook.ActiveSheetEnd IfIf flag1 <> "" And flag2 <> "" ThenWorkbooks(book1).Sheets(1).Copy Before:=ActiveWorkbook.ActiveSheetWorkbooks(book2).Sheets(1).Copy After:=ActiveWorkbook.ActiveSheetEnd IfWith ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\test\" & i & ".xlsx".Close SaveChanges:=FalseEnd WithEnd IfIf flag1 <> "" ThenWorkbooks(book1).Close SaveChanges:=FalseEnd IfIf flag2 <> "" ThenWorkbooks(book2).Close SaveChanges:=FalseEnd IfNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueMsgBox "执行完毕"End Sub
说明:路径大家可以直接指定绝对路径,因为怕有些人分不清ThisWorkbook.Path代表当前执行VBA脚本的工作簿路径的情形。
合并工作簿的工作表的引用大家可参照实际情况替换索引或者直接使用
表名进行索引。
二、操作演示
两个待合并文件夹,文件都放在里面:
新合并的路径将在test目录生成此表里面存放的是需要处理的表的名称,代码里通过[a1].CurrentRegion引用,引用后进行迭代
重点还是参照官方教程,特贴链接如下:
ExcelVBA语法
这是VBA基础语法