用vba对多个excel工作簿合并,每个工作簿里有不同的工作表,请按照每个工作簿的工作表名进行一个文件夹里面的工作簿合并
时间: 2023-08-31 21:06:08 浏览: 57
以下是一个VBA代码示例,可以按照每个工作簿的工作表名将多个Excel工作簿合并:
```vba
Sub MergeExcelFilesBySheet()
Dim wbDst As Workbook
Dim wsDst As Worksheet
Dim wbSrc As Workbook
Dim wsSrc As Worksheet
Dim file As Variant
Dim sheetName As String
Dim rowIndex As Long
' 设置合并后的结果文件
Set wbDst = Workbooks.Add
Set wsDst = wbDst.Sheets(1)
rowIndex = 1
' 遍历指定文件夹内的所有Excel文件
file = Dir("C:\path\to\folder\*.xlsx")
Do While file <> ""
' 打开当前Excel文件
Set wbSrc = Workbooks.Open("C:\path\to\folder\" & file)
' 遍历当前Excel文件中的所有工作表,并按照工作表名进行合并
For Each wsSrc In wbSrc.Worksheets
sheetName = wsSrc.Name
wsSrc.Copy After:=wsDst
Set wsDst = wbDst.Sheets(sheetName)
wsDst.Cells(rowIndex, 1).Value = file
rowIndex = wsDst.UsedRange.Rows.Count + 1
Next
' 关闭当前Excel文件
wbSrc.Close savechanges:=False
' 获取下一个Excel文件
file = Dir
Loop
' 保存合并后的结果
wbDst.SaveAs "C:\path\to\folder\merged.xlsx"
wbDst.Close savechanges:=False
End Sub
```
该代码将会遍历指定文件夹内的所有Excel文件,并按照每个工作簿的工作表名进行合并,最终将结果保存到一个名为"merged.xlsx"的新Excel文件中。注意,本代码假设所有Excel文件均存储在"C:\path\to\folder\"文件夹中,如果您的文件夹路径不同,请相应地更改代码中的文件夹路径。