|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
[color=rgba(0, 0, 0, 0.85)]Sub 汇总文件夹内所有工作簿的数据() Dim myPath As String Dim myFile As String Dim sourceBook As Workbook Dim destSheet As Worksheet Dim lastRow As Long, targetLastRow As Long ' 设置目标工作表为当前工作簿的第一个工作表 Set destSheet = ThisWorkbook.Sheets(1) ' 关闭自动计算以提高性能 Application.Calculation = xlCalculationManual ' 冻结屏幕更新,提高宏运行速度 Application.ScreenUpdating = False ' 设置文件夹路径 myPath = ThisWorkbook.Path & "\分表\" ' 查找文件夹中的第一个Excel文件 myFile = Dir(myPath & "*.xls*") ' 循环遍历文件夹中的所有Excel文件 Do While myFile <> "" ' 打开工作簿 On Error Resume Next ' 添加错误处理 Set sourceBook = Workbooks.Open(Filename:=myPath & myFile) On Error GoTo 0 ' 恢复正常错误处理 If Not sourceBook Is Nothing Then ' 确保工作簿已成功打开 With sourceBook.Sheets(1) ' 找到最后一个已使用的单元格 lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' 找到目标工作表的最后一个已使用的行(不包含标题或其他非数据行) targetLastRow = destSheet.Cells(destSheet.Rows.Count, "A").End(xlUp).Row + 1 ' 复制并粘贴数据 .Range("A1:XFD" & lastRow).Copy Destination:=destSheet.Cells(targetLastRow, "A") End With ' 关闭工作簿,不保存更改 sourceBook.Close SaveChanges:=False Else MsgBox "无法打开文件: " & myPath & myFile, vbExclamation, "错误" End If ' 查找下一个文件 myFile = Dir Loop ' 刷新目标工作表以显示所有数据 destSheet.Cells(1, 1).Resize(destSheet.Rows.Count, destSheet.Columns.Count).Value = _ destSheet.Cells(1, 1).Resize(destSheet.Rows.Count, destSheet.Columns.Count).Value ' 重新开启自动计算 Application.Calculation = xlCalculationAutomatic ' 解冻屏幕更新 Application.ScreenUpdating = True ' 显示消息框提示汇总完成 MsgBox "所有工作簿的数据汇总完成,请查看!", vbInformation, "汇总完成" End Sub
|
|