Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2546|回复: 5

[已解决]如何用VBA语句把同一文件夹下的工作簿汇总到一个工作簿里

[复制链接]
发表于 2014-3-14 16:17 | 显示全部楼层 |阅读模式
本帖最后由 chensir 于 2014-3-14 19:14 编辑

如何用VBA语句把同一文件夹下除 "汇总表" 外的工作簿汇总到"汇总表"这个工作簿里,谢谢
最佳答案
2014-3-14 16:34
本帖最后由 dsmch 于 2014-3-14 16:39 编辑
  1. Sub Macro1()
  2. Dim wb As Workbook, mypath$, wj$
  3. Dim rng As Range, c As Range, s&
  4. Application.ScreenUpdating = False
  5. mypath = ThisWorkbook.Path & ""
  6. wj = Dir(mypath & "*.xls")
  7. ActiveSheet.UsedRange.Clear
  8. s = 1
  9. Do While wj <> ""
  10.     If wj <> ThisWorkbook.Name Then
  11.         Set wb = GetObject(mypath & wj)
  12.         Set rng = wb.Sheets(1).Range("a1").CurrentRegion
  13.         If s = 1 Then Set c = rng Else Set c = rng.Offset(1, 0)
  14.         c.Copy Cells(s, 1)
  15.         s = s + c.Rows.Count
  16.         wb.Close 0
  17.     End If
  18.     wj = Dir
  19. Loop
  20. Application.ScreenUpdating = True
  21. End Sub
复制代码

汇总VBA 1.zip

106.48 KB, 下载次数: 24

发表于 2014-3-14 16:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 dsmch 于 2014-3-14 16:39 编辑
  1. Sub Macro1()
  2. Dim wb As Workbook, mypath$, wj$
  3. Dim rng As Range, c As Range, s&
  4. Application.ScreenUpdating = False
  5. mypath = ThisWorkbook.Path & ""
  6. wj = Dir(mypath & "*.xls")
  7. ActiveSheet.UsedRange.Clear
  8. s = 1
  9. Do While wj <> ""
  10.     If wj <> ThisWorkbook.Name Then
  11.         Set wb = GetObject(mypath & wj)
  12.         Set rng = wb.Sheets(1).Range("a1").CurrentRegion
  13.         If s = 1 Then Set c = rng Else Set c = rng.Offset(1, 0)
  14.         c.Copy Cells(s, 1)
  15.         s = s + c.Rows.Count
  16.         wb.Close 0
  17.     End If
  18.     wj = Dir
  19. Loop
  20. Application.ScreenUpdating = True
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2014-3-14 16:36 | 显示全部楼层
代码 在 汇总表 文件 里

320901-VBA-汇总不同工作簿的工作表.zip (113.13 KB, 下载次数: 26)

评分

参与人数 1 +18 收起 理由
chensir + 18

查看全部评分

回复

使用道具 举报

发表于 2014-3-14 16:38 | 显示全部楼层
………………

汇总VBA 1.zip

106.46 KB, 下载次数: 18

回复

使用道具 举报

发表于 2014-3-14 18:08 | 显示全部楼层
  1. Sub test()
  2.     Dim str$, str_Path$, arr
  3.     str_Path = ThisWorkbook.Path & ""
  4.     str = Dir(str_Path & "*.xls")
  5.     Range("a2:f10000").ClearContents
  6.     Application.ScreenUpdating = False
  7.     On Error Resume Next
  8.     Do While str <> ""
  9.         If InStr(str, "汇总表") = 0 Then
  10.             Workbooks.Open str_Path & str
  11.             arr = Range("a2:f" & Cells(Rows.Count, 1).End(3).Row)
  12.             ActiveWorkbook.Close 0
  13.         End If
  14.         Sheets("汇总表").Cells(Rows.Count, 1).End(3).Offset(1, 0).Resize(UBound(arr), UBound(arr, 2)) = arr
  15.         str = Dir
  16.         Erase arr
  17.     Loop
  18.     Application.ScreenUpdating = False
  19. End Sub
复制代码

评分

参与人数 1 +18 收起 理由
chensir + 18

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-14 19:15 | 显示全部楼层
多谢各位,都可实现,按先后顺序给最佳了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 12:52 , Processed in 1.874522 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表