我想用vba在excel中实现一个功能,就是让在一个文件夹中的所有excel文件都汇总到一个新excel中...
时间: 2024-02-12 10:09:09 浏览: 62
excel vba实现将多个文件内容复制汇总到一个Excel文件中-VBA源码.rar
您可以使用以下VBA代码实现此功能:
```VBA
Sub MergeExcelFiles()
Dim Path As String, FileName As String, SheetName As String
Dim LastRow As Long, LastCol As Long, StartRow As Long
Dim wb As Workbook, MainWorkbook As Workbook
Dim ws As Worksheet, MainWorksheet As Worksheet
'设置要汇总的文件夹路径
Path = "C:\YourFolderPath\"
'创建新的工作簿
Set MainWorkbook = Workbooks.Add
Set MainWorksheet = MainWorkbook.Sheets(1)
'设置汇总表格的起始行号
StartRow = 1
'循环遍历文件夹中的所有Excel文件
FileName = Dir(Path & "*.xlsx")
Do While FileName <> ""
'打开Excel文件
Set wb = Workbooks.Open(Path & FileName)
'循环遍历Excel文件中的所有工作表
For Each ws In wb.Worksheets
'获取工作表名称
SheetName = ws.Name
'获取工作表中数据的最后一行和最后一列
LastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastCol = ws.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
'将数据复制到汇总表格中
ws.Range(ws.Cells(1, 1), ws.Cells(LastRow, LastCol)).Copy MainWorksheet.Cells(StartRow, 1)
'设置汇总表格的起始行号
StartRow = MainWorksheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
Next
'关闭Excel文件,释放资源
wb.Close SaveChanges:=False
Set wb = Nothing
'获取下一个Excel文件的文件名
FileName = Dir()
Loop
'自动调整汇总表格的列宽
MainWorksheet.Cells.EntireColumn.AutoFit
End Sub
```
您需要将代码中的文件夹路径“C:\YourFolderPath\”替换为您要汇总的Excel文件所在的文件夹路径。此外,该代码假定所有要汇总的Excel文件都位于同一个文件夹中,并且每个Excel文件中只有一个工作表。如果您的情况不同,请根据实际情况对代码进行修改。
阅读全文