vba 合并多个excel的不同工作表到同一个excel的不同工作表
时间: 2023-07-11 10:29:07 浏览: 270
您可以使用以下 VBA 代码将多个 Excel 文件中的不同工作表合并到同一个 Excel 文件的不同工作表中:
```
Sub MergeExcelSheets()
Dim Path As String, FileName As String, SheetName As String
Dim DestPath As String, DestWorkbook As Workbook
Dim SheetIndex As Integer, DestSheetIndex As Integer, LastRow As Long
'设置源文件路径
Path = "C:\SourceFolder\"
'设置目标文件路径和文件名
DestPath = "C:\DestinationFolder\"
FileName = "MergedSheets.xlsx"
'创建目标文件
Set DestWorkbook = Workbooks.Add
Application.DisplayAlerts = False
DestWorkbook.SaveAs DestPath & FileName
Application.DisplayAlerts = True
'循环遍历源文件
FileName = Dir(Path & "*.xlsx")
Do While FileName <> ""
'打开源文件
Workbooks.Open Path & FileName
'循环遍历源文件的工作表
For SheetIndex = 1 To ActiveWorkbook.Sheets.Count
SheetName = ActiveWorkbook.Sheets(SheetIndex).Name
'将工作表复制到目标文件
ActiveWorkbook.Sheets(SheetName).Copy After:=DestWorkbook.Sheets(DestWorkbook.Sheets.Count)
DestSheetIndex = DestWorkbook.Sheets.Count
'重命名工作表
DestWorkbook.Sheets(DestSheetIndex).Name = FileName & " - " & SheetName
'删除目标文件新工作表中的第一行(如果需要可以删除)
LastRow = DestWorkbook.Sheets(DestSheetIndex).Cells(Rows.Count, 1).End(xlUp).Row
If LastRow > 1 Then
DestWorkbook.Sheets(DestSheetIndex).Rows("1:1").Delete
End If
Next SheetIndex
'关闭源文件
Workbooks(FileName).Close SaveChanges:=False
'获取下一个源文件名
FileName = Dir()
Loop
'保存目标文件
DestWorkbook.Save
'关闭目标文件
DestWorkbook.Close
End Sub
```
在上面的代码中,您需要修改以下变量:
- Path:源文件路径。
- DestPath:目标文件路径。
- FileName:目标文件名。
- Rows("1:1").Delete:如果您不想删除新工作表的第一行,请将此行代码注释或删除。
请注意,此代码假定所有源文件和目标文件中的工作表都具有相同的结构。如果工作表结构不同,则需要进行更改。
阅读全文