vba遍历文件夹下所有子文件夹中的Excel工作簿,汇总到同一工作簿
时间: 2024-09-07 22:01:26 浏览: 106
VBA宏汇总同文件夹下多工作簿数据
5星 · 资源好评率100%
在VBA中遍历文件夹下所有子文件夹中的Excel工作簿并将它们汇总到同一工作簿,通常需要使用FileSystemObject对象来遍历文件系统,并且使用Excel的Workbooks集合来打开工作簿。以下是一个简单的示例代码:
```vba
Sub 合并所有工作簿()
Dim fs As Object, folder As Object, subfolder As Object
Dim file As Object, wb As Workbook
Dim destWb As Workbook
Dim destSheet As Worksheet
' 创建一个新的工作簿用于汇总
Set destWb = Workbooks.Add
Set destSheet = destWb.Sheets(1)
destSheet.Name = "汇总数据"
' 创建FileSystemObject对象
Set fs = CreateObject("Scripting.FileSystemObject")
' 指定要遍历的文件夹路径
Set folder = fs.GetFolder("C:\你的文件夹路径")
' 遍历文件夹和子文件夹
For Each subfolder In folder.SubFolders
For Each file In subfolder.Files
If Right(file.Name, 5) = ".xlsx" Or Right(file.Name, 4) = ".xls" Then
' 打开工作簿
Set wb = Workbooks.Open(file.Path)
' 遍历工作簿中的工作表并复制数据到汇总工作簿
Dim sourceSheet As Worksheet
For Each sourceSheet In wb.Sheets
sourceSheet.UsedRange.Copy destSheet.Cells(destSheet.Rows.Count, 1).End(xlUp).Offset(1, 0)
Next sourceSheet
' 关闭打开的工作簿,不保存更改
wb.Close SaveChanges:=False
End If
Next file
Next subfolder
' 清理
Set file = Nothing
Set subfolder = Nothing
Set folder = Nothing
Set fs = Nothing
Set destSheet = Nothing
Set destWb = Nothing
End Sub
```
在使用这段代码之前,请确保将 `"C:\你的文件夹路径"` 替换成你实际要遍历的文件夹路径。此代码会打开每个找到的Excel文件,并将每个工作表的内容复制到汇总工作簿的一个工作表中。请根据实际需求调整代码中的工作表和数据处理逻辑。
阅读全文