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

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

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

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

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

二、示例
1.要求:需要该工作簿的所有表格,单独保存为工作簿
2.做法:利用vba代码,实现一键将多份工作簿,合并到一张工作表内,并在最后一列说
明工作表的名称,以作标识
需要这些工作簿合并到一张
工作表中(格式相同)
新建一份要合并到的工作簿,点击自定义宏中“合并文件”按钮
输入要合并文件的
路径
输入要合并的格式
实现合并
三、重点:vba源代码如下(具有通用性)
Sub 合并文件需新建()
On Error Resume Next
Dim MyPath, MyName
Dim Wb As Workbook, WbN As String
Dim G As Long, Num As Long, i, j
Application.ScreenUpdating = False
MyPath = InputBox("请输入要合并的文件路径")
gs = InputBox("请输入文件格式,如:xls")
If MyPath <> "" And gs <> "" Then
MyName = Dir(MyPath & "\" & "*." & gs & "*") '注意修改文件格式
Num = 0
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
For G = 1 To Sheets.Count
Wb.Sheets(G).UsedRange.Copy Workbooks(1).Sheets(1).Cells(Workbooks(1). _
Sheets(1).Range("B1048576").End(xlUp).Row, 1)
Next
MyName = Dir
Do While MyName <> ""
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
For G = 1 To Sheets.Count
i = Wb.Sheets(G).Range("B1048576").End(xlUp).Row
j = 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) Next
WbN = WbN & Chr(13) &
Wb.Close
MyName = Dir
Loop
Workbooks(1).Sheets(1).Activate
ActiveSheet.Range("a1").Select
Selection.AutoFilter
ActiveSheet.Range("a2").Select
ActiveWindow.FreezePanes = True
Application.DisplayAlerts = False
Workbooks(1).Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。

如下:" & Chr(13) & WbN, vbInformation, "提示"
End If
End Sub
四、使用说明
注意格式一致,合并后不会重复表头;
如何将vba代码以自定义宏的方式,集成到excel选项卡中,请自行百度学习。

或者,在购买后,联系微信号:risklin咨询。

相关文档
最新文档