您可以按照以下VBA代码来实现把同一路径上的所有工作簿合并到同一个工作簿中:
```VBA
Option Explicit
Sub MergeWorkbooks()
Dim path As String, fileName As String, sheet As Worksheet
Dim targetWorkbook As Workbook, sourceWorkbook As Workbook
Dim worksheetsCount As Integer, i As Integer, j As Integer
'设置合并后的目标工作簿,即第一个打开的工作簿
Set targetWorkbook = Application.Workbooks.Open(Application.GetOpenFilename("Excel Workbooks (*.xls;*.xlsx;*.xlsm;*.xlsb),*.xls;*.xlsx;*.xlsm;*.xlsb"))
'获取路径
path = targetWorkbook.path
'遍历所有工作簿,连接到目标工作簿并复制工作表
fileName = Dir(path & "\*.xls*")
While fileName <> ""
'跳过目标工作簿本身
If fileName <> targetWorkbook.Name Then
Set sourceWorkbook = Application.Workbooks.Open(path & "\" & fileName)
'复制每个工作表
worksheetsCount = sourceWorkbook.Worksheets.Count
For i = 1 To worksheetsCount
'如果名称相同,则跳过该工作表
For j = 1 To targetWorkbook.Worksheets.Count
If targetWorkbook.Worksheets(j).Name = sourceWorkbook.Worksheets(i).Name Then
GoTo NextIteration
End If
Next j
'将工作表复制到目标工作簿
sourceWorkbook.Worksheets(i).Copy After:=targetWorkbook.Worksheets(targetWorkbook.Worksheets.Count)
NextIteration:
Next i
'关闭已经复制完的工作簿
sourceWorkbook.Close False
End If
fileName = Dir
Wend
'保存目标工作簿
targetWorkbook.Save
'关闭目标工作簿
targetWorkbook.Close
'显示消息框提示处理完成
MsgBox "完成合并工作簿操作。"
End Sub
在这个VBA程序中,首先会打开第一个工作簿作为合并后的目标工作簿。接着,程序会获取目标工作簿的路径,然后遍历该路径下的所有工作簿。对于除了目标工作簿本身以外的每个工作簿,程序都会打开它,并将其所有工作表复制到目标工作簿中。最后,程序会保存目标工作簿并显示一个消息框来提示处理完成。#excel技巧#
标签: excel