vba 合并多个excel的指定工作表到同一个excel的同名工作表
时间: 2023-07-24 10:24:22 浏览: 233
可以使用以下 VBA 代码来实现:
```
Sub MergeExcelSheets()
' 定义变量
Dim folderPath As String
Dim fileName As String
Dim currentWorkbook As Workbook
Dim targetWorkbook As Workbook
Dim currentWorksheet As Worksheet
Dim targetWorksheet As Worksheet
' 打开目标工作簿
Set targetWorkbook = ThisWorkbook
' 选择包含要合并的工作簿的文件夹
folderPath = Application.GetFolder("请选择包含要合并的工作簿的文件夹")
' 循环遍历文件夹中的所有Excel文件
fileName = Dir(folderPath & "\*.xlsx")
Do While fileName <> ""
' 打开当前工作簿
Set currentWorkbook = Workbooks.Open(folderPath & "\" & fileName)
' 循环遍历当前工作簿中的所有工作表
For Each currentWorksheet In currentWorkbook.Worksheets
' 检查是否存在同名的工作表
If targetWorkbook.Worksheets(currentWorksheet.Name) Is Nothing Then
' 如果不存在,则复制当前工作表到目标工作簿中
currentWorksheet.Copy after:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count)
Else
' 如果存在,则将当前工作表的数据复制到目标工作表中
Set targetWorksheet = targetWorkbook.Worksheets(currentWorksheet.Name)
currentWorksheet.UsedRange.Copy Destination:=targetWorksheet.Range("A1")
End If
Next
' 关闭当前工作簿
currentWorkbook.Close SaveChanges:=False
' 继续处理下一个文件
fileName = Dir
Loop
' 提示合并完成
MsgBox "已完成合并!"
End Sub
```
在运行代码之前,需要将目标工作簿打开,并将其保存到一个已知的位置。代码会提示您选择包含要合并的工作簿的文件夹。它将遍历该文件夹中的所有 Excel 文件,并将它们的指定工作表合并到目标工作簿中的同名工作表中。如果目标工作簿中不存在同名工作表,则会将当前工作表复制到目标工作簿中。
阅读全文