用VBA合并Excel工作簿

合集下载

Excel高效办公VBA代码-快速将多个工作簿合并到一张工作表

Excel高效办公VBA代码-快速将多个工作簿合并到一张工作表

快速将多个工作簿合并到一张工作表作者原著,尊重成果,侵权必究一、应用场景我们很多时候,导出数十份excel格式,文本格式的文档;这些文档的格式一致,我们需要将它们合并到一张工作表中,而且合并后不会重复表头。

通常要一张张打开,复制,耗时耗力。

利用vba代码将可以一键实现将多份文件,一秒钟快速合并到一张工作表中。

二、示例1.要求:需要该工作簿的所有表格,单独保存为工作簿2.做法:利用vba代码,实现一键将多份工作簿,合并到一张工作表内,并在最后一列说明工作表的名称,以作标识需要这些工作簿合并到一张工作表中(格式相同)新建一份要合并到的工作簿,点击自定义宏中“合并文件”按钮输入要合并文件的路径输入要合并的格式实现合并三、重点:vba源代码如下(具有通用性)Sub 合并文件需新建()On Error Resume NextDim MyPath, MyNameDim Wb As Workbook, WbN As StringDim G As Long, Num As Long, i, jApplication.ScreenUpdating = FalseMyPath = InputBox("请输入要合并的文件路径")gs = InputBox("请输入文件格式,如:xls")If MyPath <> "" And gs <> "" ThenMyName = Dir(MyPath & "\" & "*." & gs & "*") '注意修改文件格式Num = 0Set Wb = Workbooks.Open(MyPath & "\" & MyName)For G = 1 To Sheets.CountWb.Sheets(G).UsedRange.Copy Workbooks(1).Sheets(1).Cells(Workbooks(1). _Sheets(1).Range("B1048576").End(xlUp).Row, 1)NextMyName = DirDo While MyName <> ""Set Wb = Workbooks.Open(MyPath & "\" & MyName)Num = Num + 1For G = 1 To Sheets.Counti = Wb.Sheets(G).Range("B1048576").End(xlUp).Rowj = Wb.Sheets(G).Cells(1, 16384).End(xlToLeft).Column '不复制表头Wb.Sheets(G).Range(Cells(2, 1), Cells(i, j)).Copy Workbooks(1).Sheets(1) _.Cells(Workbooks(1).Sheets(1).Range("B1048576").End(xlUp).Row + 1, 1) NextWbN = WbN & Chr(13) & Wb.CloseMyName = DirLoopWorkbooks(1).Sheets(1).ActivateActiveSheet.Range("a1").SelectSelection.AutoFilterActiveSheet.Range("a2").SelectActiveWindow.FreezePanes = TrueApplication.DisplayAlerts = FalseWorkbooks(1).SaveApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueMsgBox "共合并了" & Num & "个工作薄下的全部工作表。

excel怎么合并工作薄合并工作薄的两种方法

excel怎么合并工作薄合并工作薄的两种方法

excel怎么合并工作薄合并工作薄的两种方法很多用户不清楚excel怎么合并工作薄,不知道合并的具体方法,下面小编为大家介绍一下如何合并,一起来看吧。

~~~~~~工作薄合并的分割线~~~~~~问题描述:-------------------------------------【方法一】移动或复制工作表(适用于工作薄较少的情况)1.打开被合并工作薄(北方区域数据)和汇总工作薄;2.全选被合并工作薄(北方区域数据)中的工作表;3.建立副本,移动或复制到汇总工作薄中;4.其他工作薄同方法移动复制。

-------------------------------------【方法二】VBA代码(适用于工作薄较多的情况)代码如下:——————————————————Sub CombineFiles()Dim P As StringDim FN As StringDim LC As RangeDim Wkb As WorkbookDim WS As WorksheetDim TWB As StringDim MyDir As StringMyDir = ThisWorkbook.path & ‘\’TWB = Application.EnableEvents = FalseApplication.ScreenUpdating = FalseP = MyDirFN = Dir(P & ‘\*.xls’, vbNormal)Do Until FN = ‘‘If FN TWB ThenSet Wkb = Workbooks.Open(FileName:=P & ‘\’ & FN)For Each WS In Wkb.WorksheetsSet LC = WS.Cells.SpecialCells(xlCellTypeLastCell)If LC.Value = ‘‘ And LC.Address = Range(‘$A$1’).Address ThenElseWS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) End IfNext WSWkb.Close FalseEnd IfFN = Dir()LoopApplication.EnableEvents = TrueApplication.ScreenUpdating = TrueSet Wkb = NothingSet LC = NothingEnd Sub——————————————————-------------------------------------以上两种方法各有各的利弊,小伙伴们在实际工作中可以结合自身的情况进行选择。

VBA对多个工作簿进行合并计算(求和)一例

VBA对多个工作簿进行合并计算(求和)一例

VBA对多个工作簿进行合并计算(求和)一例VBA对多个工作簿进行合并计算(求和)一例Excel中的合并计算可以对多个工作表的对应项目进行求和、求平均值等计算,但如果需要合并计算的工作表较多,特别是这些工作表位于不同的工作簿内时,逐一选择数据源显得较为繁琐。

用VBA中的Range.Consolidate方法可以快速地对多个结构相似的工作表进行合并计算,但如果表格内包含有非数值类型的数据列,合并计算会忽略这些列。

例如下图为某个图书销售点1至12月的图书销售记录,销售数量位于D至O列,其中B列和C列为与A列对应的数据,无需参与合并计算,但必须在汇总表中列出。

各销售点都有一个类似的销售表格,每个分表列出的图书数量不等,图书名称也不尽相同。

现在需要对各销售点的销售表格中D至O列的销售数量按照A列图书名称进行合计,求出总的销售数量。

如果直接使用合并计算,Excel会忽略B列文本,同时对C列(单价)也进行合并计算,显然不符合要求。

这时使用VBA中的Dictionary对象,可以解决这一问题,代码如下:Sub SumWorkbooks()Dim ThePath As String, TheFile As StringDim d As Object, Wbk As WorkbookDim i As Integer, j As Integer, k As IntegerDim Arr1(11), Arr2(), Arr3(), dkOn Error Resume NextApplication.ScreenUpdating = FalseSet d = CreateObject("scripting.dictionary")ThePath = ThisWorkbook.Path & "\"TheFile = Dir(ThePath & "*.xls")Do While TheFile <> ""If TheFile <> ThenSet Wbk = GetObject(ThePath & TheFile)With Wbk.Worksheets(1)For i = 2 To .Range("A65536").End(xlUp).Row'将D至O列数值赋值给Arr1For j = 0 To 11Arr1(j) = .Cells(i, j + 4).ValueNext jIf Not d.exists(.Range("A" & i).Value) Then'key对应一个数组d.Add .Range("A" & i).Value, Arr1'将不能求和的数据赋值给Arr2ReDim Preserve Arr2(1 To 2, 1 To k + 1)For j = 1 To 2Arr2(j, k + 1) = .Cells(i, j + 1)Next jk = k + 1ElseFor j = 0 To 11'若数据存在则D至O列数值对应合计到Arr1中的每个元素Arr1(j) = d(.Range("A" & i).Value)(j) + Arr1(j)Nextd(.Range("A" & i).Value) = Arr1End IfNextEnd WithWbk.Close FalseEnd IfTheFile = Dir '当前文件夹内的下一个工作簿Loop'输出With ThisWorkbook.Worksheets(1).Range("A2").Resize(d.Count, 1) = Application.Transpose(d.keys)dk = d.keysReDim Arr3(1 To d.Count, 1 To 12)For i = 0 To d.Count - 1For j = 0 To 11Arr3(i + 1, j + 1) = d(dk(i))(j)Next jNext i.Range("D2:O" & d.Count + 1).Value = Arr3.Range("B2:C" & d.Count + 1).Value = Application.Transpose(Arr2)End WithSet d = NothingApplication.ScreenUpdating = TrueEnd Sub在汇总表中按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,粘贴上述代码并运行,即可对汇总工作簿所在的文件夹内的其他所有工作簿的第一个工作表进行合并求和,无需打开各个需要汇总的工作簿。

合并多个excel表格的方法

合并多个excel表格的方法

合并多个excel表格的方法合并多个Excel表格有以下几种方法:1. 使用Excel自带的功能:打开一个空白Excel表格,在新的工作表中选择“数据”选项卡,点击“从其他源”下拉菜单中的“从工作簿”选项,选择需要合并的Excel文件,依次选择需要合并的工作表,点击“确定”即可将所有选择的工作表合并到新的工作簿中。

2. 使用VBA宏:打开一个空白Excel表格,按下“Alt + F11”打开VBA编辑器,插入一个新的模块,在模块中输入以下VBA代码:```VBASub MergeSheets()Dim ws As WorksheetDim rng As RangeDim destSheet As WorksheetSet destSheet = ThisWorkbook.Worksheets.AddFor Each ws In ThisWorkbook.WorksheetsIf <> ThenSet rng = edRangerng.CopydestSheet.Cells(destSheet.Cells.SpecialCells(xlCellTypeLastCell). Row + 1, 1)End IfNext wsdestSheet.Cells.SelectdestSheet.Cells.EntireColumn.AutoFitEnd Sub```按下“F5”运行宏,所有工作表的数据将合并到一个新的工作表中。

3. 使用第三方插件或软件:有许多第三方插件和软件可以实现Excel表格的合并,例如Kutools for Excel、Ablebits Merge Tables for Excel等。

这些工具通常提供更多的合并选项和灵活性,可以根据实际需求选择。

使用以上方法中的任意一种,都能合并多个Excel表格。

具体选择哪种方法,可以根据实际情况和个人偏好来决定。

vba10个excel表每个表2个子文件夹合并汇总

vba10个excel表每个表2个子文件夹合并汇总

vba10个excel表每个表2个子文件夹合并汇总在Excel VBA中,如果你想要合并10个Excel工作簿(每个工作簿位于两个子文件夹中)的数据到一个汇总工作簿,你可以使用以下步骤来编写代码:1.确定子文件夹和文件的路径。

2.循环遍历每个子文件夹中的每个工作簿。

3.打开每个工作簿,并复制需要的数据到汇总工作簿。

4.关闭每个工作簿。

以下是一个示例VBA代码,用于合并两个子文件夹中的10个Excel工作簿的数据:vba复制代码Sub MergeWorkbooks()Dim SummaryWorkbook As WorkbookDim SourceWorkbook As WorkbookDim SourceRange As RangeDim DestRange As RangeDim LastRow As LongDim FolderPath1 As StringDim FolderPath2 As StringDim FileName As StringDim i As Integer' 设置两个子文件夹的路径FolderPath1 = "C:\SubFolder1\"FolderPath2 = "C:\SubFolder2\"' 创建汇总工作簿(如果它不存在的话)If Workbooks("MergedData.xlsx").Count = 0 Then Set SummaryWorkbook = Workbooks.AddSummaryWorkbook.SaveAsFilename:="C:\MergedData.xlsx"ElseSet SummaryWorkbook =Workbooks("MergedData.xlsx")End If' 初始化行计数器i = 1' 循环遍历第一个子文件夹中的文件FileName = Dir(FolderPath1 & "*.xlsx")Do While FileName <> ""' 打开源工作簿Set SourceWorkbook = Workbooks.Open(FolderPath1 & FileName)' 假设你要合并的数据位于每个工作簿的Sheet1Set SourceRange =SourceWorkbook.Sheets("Sheet1").UsedRange' 将数据复制到汇总工作簿的下一行LastRow =SummaryWorkbook.Sheets("Sheet1").Cells(SummaryWorkb ook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row + 1 Set DestRange =SummaryWorkbook.Sheets("Sheet1").Range("A" & LastRow)SourceRange.Copy DestRange' 关闭源工作簿,不保存更改SourceWorkbook.Close SaveChanges:=False' 移动到下一个文件FileName = Dir()i = i + 1Loop' 重置i用于第二个子文件夹i = 1' 循环遍历第二个子文件夹中的文件FileName = Dir(FolderPath2 & "*.xlsx")Do While FileName <> ""' 打开源工作簿Set SourceWorkbook = Workbooks.Open(FolderPath2 & FileName)' 假设你要合并的数据位于每个工作簿的Sheet1Set SourceRange =SourceWorkbook.Sheets("Sheet1").UsedRange' 将数据复制到汇总工作簿的下一行LastRow =SummaryWorkbook.Sheets("Sheet1").Cells(SummaryWorkb ook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row + 1 Set DestRange =SummaryWorkbook.Sheets("Sheet1").Range("A" &LastRow)SourceRange.Copy DestRange' 关闭源工作簿,不保存更改SourceWorkbook.Close SaveChanges:=False' 移动到下一个文件FileName = Dir()i = i + 1Loop' 保存并关闭汇总工作簿SummaryWorkbook.SaveSummaryWorkbook.Close' 提示用户合并完成MsgBox "所有数据已成功合并到MergedData.xlsx"End Sub确保替换代码中的文件夹路径 C:\SubFolder1\ 和 C:\SubFolder2\ 为你实际的文件夹路径,以及确保你要合并的工作表名称是"Sheet1"。

多个工作簿合并到一个工作簿中

多个工作簿合并到一个工作簿中

多个工作簿合并到一个工作簿中
首先,我们可以使用Excel自带的“合并工作簿”功能来实现多个工作簿的合并。

具体操作步骤如下,首先打开一个新的空白工作簿,然后选择“数据”选项卡中的“获取外部数据”功能,接着选择“从工作簿”选项,然后在弹出的对话框中选择需要合并的工作簿文件,最后按照提示完成合并操作即可。

其次,我们还可以通过使用宏来实现多个工作簿的合并。

宏是一种自动化操作
的方式,可以帮助我们简化重复的操作步骤。

具体操作步骤如下,首先打开一个新的空白工作簿,然后按下“Alt+F11”组合键打开VBA编辑器,接着在VBA编辑
器中编写宏代码,最后保存并执行编写好的宏代码即可实现多个工作簿的合并操作。

此外,我们还可以借助第三方工具来实现多个工作簿的合并。

市面上有很多优
秀的第三方工具可以帮助我们实现这一目标,比如Kutools for Excel、Power Query 等。

这些工具通常具有更加丰富和强大的功能,可以帮助我们更加高效地完成多个工作簿的合并操作。

总的来说,无论是使用Excel自带的功能、编写宏代码,还是借助第三方工具,我们都可以实现多个工作簿的合并。

在实际操作中,我们可以根据具体的需求和情况选择合适的方法来完成这一操作。

希望以上介绍的方法可以帮助大家更加轻松地实现多个工作簿的合并,提高工作效率。

合并多个工作表和多个工作簿

通过VBA 将当前工作簿里的多个工作表合并到一个工作表中假设你有三个工作表(分别命名为一年级,二年级和三年级),各个工作表里的数据格式和布局一样。

现在你需要将这三个工作表合并到一个工作表里。

见下图:下面的VBA 代码能帮你把当前工作簿里各个工作表里的数据合并到一个新工作表里。

同时需要注意的是,所有工作表里的数据结构,列标题,以及各列排列的顺序都必须一样。

操作如下:1. 按住Alt + F11键打开Microsoft Visual Basic for Applications窗口。

2. 点击插入 >> 模块,再将下面的代码粘贴到模块窗口里。

VBA:将当前工作簿里各个工作表里的数据合并到一个新工作表里Sub Combine()Dim J As IntegerOn Error Resume NextSheets(1).SelectWorksheets.AddSheets(1).Name = "Combined"Sheets(2).ActivateRange("A1").EntireRow.SelectSelection.Copy Destination:=Sheets(1).Range("A1")For J = 2 To Sheets.CountSheets(J).ActivateRange("A1").SelectSelection.CurrentRegion.SelectSelection.Offset(1, 0).Resize(Selection.Rows.Count - 1).SelectSelection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2) NextEnd Sub3. 按F5 键运行代码。

运行后,当前工作簿里的数据都被并合并到一个名为Combine的新工作表中,并列在所有工作表前面。

利用VBA将excel多个工作表数据快速合并到一个工作表方法

利⽤VBA将excel多个⼯作表数据快速合并到⼀个⼯作表⽅法利⽤VBA将数据区域不定的多个⼯作表数据快速合并到⼀个⼯作表⽅法。

有需要的朋友可以跟着教程⼀起来学习!Excel2007 绿⾊版精简免费[58MB]类型:办公软件⼤⼩:58MB语⾔:简体中⽂时间:2016-06-27查看详情⽅法/步骤分别有⼯作表1、2、3数据区域如下图所⽰:按ALT+F11打开VBE编辑器,在⼯程窗⼝下的Microsoft Excel对象右键-插⼊-模块,新建⼀个模块1。

输⼊如下代码:复制代码代码如下:Option ExplicitSub hbgzb()Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer</p> flag = False For i = 1 To Sheets.CountIf Sheets(i).Name = "合并数据" Then flag = TrueNextIf flag = False ThenSet sh = Worksheets.Add = "合并数据"Sheets("合并数据").Move after:=Sheets(Sheets.Count)End IfFor i = 1 To Sheets.CountIf Sheets(i).Name <> "合并数据" Thenhrow = Sheets("合并数据").UsedRange.Rowhrowc = Sheets("合并数据").UsedRange.Rows.CountIf hrowc = 1 ThenSheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow, 1).End(xlUp)ElseSheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow + hrowc - 1, 1).Offset(1, 0)End IfEnd IfNext iEnd Sub按ALT+F8打开宏对话框窗⼝,⿏标单击执⾏hbgzb宏。

[Excel]ExcelVBA函数定义之合并所有工作簿

[Excel]ExcelVBA函数定义之合并所有工作簿Excel VBA函数定义合并所有工作簿直接合并Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long Dim Num As Long Dim BOX As String Application.ScreenUpdating = False MyPath = ActiveWorkbook.Path MyName = Dir(MyPath & '\' & '*.xlsx') AWbName = Num = 0 Do While MyName <> '' If MyName <> AWbName Then Set Wb = Workbooks.Open(MyPath & '\' & MyName) #第一页不使用 Num = Num + 1 With Workbooks(1).ActiveSheet #赋值语句:激活Sheet的A列最后一个单元格赋值为MyName去掉'.xls’的部 .Cells(.Range('B305536').End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4) For G = 1 To Sheets.Count Wb.Sheets(G).UsedRange.Copy .Cells(.Range('B305536').End(xlU p).Row + 1, 1) Next WbN = WbN & Chr(13) & Wb.Close False End With End If MyName = Dir Loop Range('A1').Select Application.ScreenUpdating = True MsgBox '共合并了' & Num & '个工作薄下的全部工作表。

合并工作表及拆分工作簿-VBA代码

Sub工作薄间工作表合并()Dim FileOpenDim X As IntegerApplication.ScreenUpdating = FalseFileOpen=Application.GetOpenFilename(FileFilter:="MicroSoftExcel文件(*.xls*),*.xls*",MultiSelect:=True,Title:="合并工作薄")'弹出打开文件界面,显示并选择要合并的Excel文件,支持多选If TypeName(FilesToOpen) = "Boolean" Then '未做任何选择MsgBox "没有选中文e799bee5baa631333337626133件" '则提示没有选中文件GoTo ExitHandler '然后跳转至ExitHandlerEnd IfX = 1While X <= UBound(FileOpen) 'x从1到打开文件的个数循环Workbooks.Open Filename:=FileOpen(X) '以此打开文件Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '将打开的文件工作表移动到这个工作表的最后一个工作表后面X = X + 1WendExitHandler: '如果不选择文件,不执行上述文件合并操作Application.ScreenUpdating = TrueExit Suberrhadler:MsgBox Err.Description '如果出现错误,弹框提示错误Resume ExitHandler '返回ExitHandler,即启用屏幕刷新并退出程序End SubSub自动拆分工作表到同一文件夹中()''把各个工作表以单独的工作簿文件保存在本工作簿所在的文件夹下的“拆分工作簿”文件夹下'获取活动工作簿所在路径并判断该路径下是否存在文件夹"拆分工作簿",如果不存在则创建'遍历活动工作簿中的每个工作表,复制并另存为新的工作簿,工作簿文件名以工作表名称命名'如果遇到隐藏工作表,则先打开隐藏,复制并另存为后关闭隐藏'Application.ScreenUpdating = False '关闭屏幕更新Dim xpath, isNext As StringDim sht As Worksheetxpath = Application.ActiveWorkbook.Path & "\拆分工作簿"If Len(Dir(xpath, vbDirectory)) = 0 Then MkDir xpath '如果文件夹不存在,则新建文件夹For Each sht In WorksheetsIf sht.Visible = False Then'MsgBox "有隐藏工作表" & '隐藏工作表是否拆分isNext = InputBox("1:跳过不处理" & Chr(10) & "2:处理并保持隐藏" & Chr(10)& "3:处理并取消隐藏" & Chr(10) & "空:不输入或其他值则默认不执行", "【" & & "】为隐藏工作表,请选择执行方式")If isNext = 2 Or isNext = 3 Thensht.Visible = True '取消工作表的隐藏sht.CopyActiveWorkbook.SaveAs Filename:=xpath & "\" & &".xlsx"ActiveWorkbook.CloseIf isNext = 2 Thensht.Visible = False '恢复工作表的隐藏End IfEnd IfElseIf sht.Visible = True Thensht.CopyActiveWorkbook.SaveAs Filename:=xpath & "\" & &".xlsx"ActiveWorkbook.CloseEnd IfNext'MsgBox "工作簿拆分结束"Application.ScreenUpdating = True'恢复屏幕更新End Sub。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有许多实现Excel工作簿合并的方法,在《将多个工作簿中的数据合并到一个工作簿》中介绍过
例如,需要将多个Excel工作簿中的工作表合并到一个工作簿。这里假设需要合并的工作簿在“D:\示例

Sub CombineWorkbooks()
Dim strFileName As String
Dim wb As Workbook
Dim ws As Object

'包含工作簿的文件夹,可根据实际修改
Const strFileDir As String = "D:\示例\数据记录\"

Application.ScreenUpdating = False
Set wb = Workbooks.Add(xlWorksheet)
strFileName = Dir(strFileDir & "*.xls*")

Do While strFileName <> vbNullString
Dim wbOrig As Workbook
Set wbOrig = Workbooks.Open(Filename:=strFileDir & strFileName, ReadOnly:=True)
strFileName = Left(Left(strFileName, Len(strFileName) - 4), 29)

For Each ws In wbOrig.Sheets
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
If wbOrig.Sheets.Count > 1 Then
wb.Sheets(wb.Sheets.Count).Name = strFileName & ws.Index
Else
wb.Sheets(wb.Sheets.Count).Name = strFileName
End If
Next

wbOrig.Close SaveChanges:=False
strFileName = Dir
Loop
Application.DisplayAlerts = False
wb.Sheets(1).Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
Set wb = Nothing
End Sub
示例文档下载:
下面是合并多个Excel工作簿的另一种情形,也是《Excel VBA实战技巧精粹》中<技巧91:汇总
有四个工作簿,分别为:汇总工作簿.xls、一月.xls、二月.xls、三月.xls,其中一月.xls、二月.xls
在“汇总工作簿.xls”中打开VBE,并输入下列代码:

Sub ConsolidateWorkbook()
Dim RangeArray() As String
Dim bk As Workbook
Dim sht As Worksheet
Dim WbCount As Integer
WbCount = Workbooks.Count
ReDim RangeArray(1 To WbCount - 1)
For Each bk In Workbooks '在所有工作簿中循环
If Not bk Is ThisWorkbook Then '非代码所在工作簿
Set sht = bk.Worksheets(1) '引用工作簿的第一个工作表
i = i + 1
RangeArray(i) = "'[" & bk.Name & "]" & sht.Name & "'!" & _
sht.Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1)
End If
Next
Worksheets(1).Range("A1").Consolidate _
RangeArray, xlSum, True, True
End Sub

运行上述代码前,必须打开所有的工作簿。运行代码后,将自动汇总所有工作表中的值并将相应
示例文档下载:

下面是汇总多个工作簿的又一种情形,也是一名网友提出的问题:在同一文件夹中有多个工作簿,其中
Sub UnionWorksheets()
Application.ScreenUpdating = False
Dim lj As String
Dim dirname As String
Dim nm As String

lj = ActiveWorkbook.Path
nm = ActiveWorkbook.Name
dirname = Dir(lj & "\*.xls*")

Cells.Clear
Do While dirname <> ""
If dirname <> nm Then
Workbooks.Open Filename:=lj & "\" & dirname

Workbooks(nm).Activate
'复制新打开工作簿的第一个工作表的已用区域到当前工作表
Workbooks(dirname).Sheets(1).UsedRange.Copy _
Range("A65536").End(xlUp).Offset(1, 0)

Workbooks(dirname).Close False
End If
dirname = Dir
Loop

End Sub
簿》中介绍过合并工作簿的示例。下面再列举几个示例,供有兴趣的朋友参考。
的工作簿在“D:\示例\数据记录\”文件夹中,含有两个工作簿test1.xls、test2.xls(当然,可以不限于两个),

ReadOnly:=True)
技巧91:汇总多个工作簿的工作表>所介绍的方法,即合并汇总。

中一月.xls、二月.xls、三月.xls均只含有一张工作表且工作表中的数据均自单元格A1开始,现在要求将它们合并至

中的值并将相应单元格的值求和。
中有多个工作簿,其中有一个用于汇总的工作簿,要求将除该汇总工作簿外的其它工作簿中的第一张工作表的数据汇
求将它们合并至“汇总工作簿.xls”中。
第一张工作表的数据汇总到该汇总工作簿中。代码如下:

相关文档
最新文档