作者:绿色风
分类:
时间:2022-08-18
浏览:124
楼主 wise |
如何用VBA 汇总不同工作簿的数据?
- Sub 汇总()
- Dim mypath As String, myname As String, Dname As String, sh As Worksheet
- Set sh = ActiveSheet
- mypath = ThisWorkbook.Path
- myname = ThisWorkbook.Name
- Dname = Dir(mypath & "\*.xls")
- Application.ScreenUpdating = False
- sh.UsedRange.Offset(1, 0).Clear
- Do While Dname <> ""
- If Dname <> myname Then
- With GetObject(mypath & "\" & Dname)
- .Sheets(1).UsedRange.Offset(1, 0).Copy sh.[A65536].End(xlUp).Offset(1)
- .Close False
- End With
- End If
- Dname = Dir
- Loop
- Application.ScreenUpdating = True
- MsgBox "OK!"
- End Sub
汇总不同工作簿所有记录.rar |
2楼 ljx63426 |
谢谢分享 |
3楼 ljx63426 |
|
4楼 ggsmart |
谢谢分享 |
5楼 kklivtre |
我见到最好用的汇总,谢谢分享! |
6楼 lrlxxqxa |
收藏备用,谢谢楼主! |
7楼 sam.tan |
好东东值得收藏,谢谢啦! |
8楼 yncxxmj |
非常实用,收藏。 |
9楼 ljx63426 |
非常实用
|
10楼 开心萝卜 |
收藏慢慢学习! |
11楼 wise |
都忘记当初怎么想出来的 |
12楼 wise |
以前弄的帖子现在用到了,哈哈,看来还是社区好 |
13楼 DayWalker |
赞 |
14楼 亮少 |
VBA学习中、、、、、谢谢! |
15楼 oceaner |
我怎么用不了啊! |
16楼 kszcs |
收藏 |
17楼 qinhuan66 |
好好学习天天向上 |
18楼 ljx63426 |
最好用的汇总,谢谢分享! |
19楼 jimmyfung |
这个是很好用了,你们那历害了, 如果能指定一下区域将会更完美,因为一般的表A列都是序号列,所以没有指定区域的话,汇总后在汇总表里的A列(序号列)将不是连续的,各位大虾位改进一下吧! 我弄了半天也没有改好! |
20楼 ljx63426 |
最好用的汇总,谢谢分享! |
21楼 ljx63426 |
最好用的汇总,谢谢分享! |
22楼 bluexuemei |
优秀代码,学习! |
23楼 ych405 |
应该叫“合并” |
24楼 zhangjinsong |
很好的内容********! |
25楼 LOGO |
好像把 .Close False 去掉代码也是可以完成任务的。 想请教一下在这里 .Close False 这句代码的作用是什么? |
26楼 wise |
关闭 |
27楼 LOGO |
明白了,小七应该是把除了汇总工作簿外该文件夹中还有其他工作簿是处于打开状态这种情况考虑进去了 而我测试时除了汇总代码所在工作簿外该文件夹中的其他工作簿是处于关闭状态的,所以有没有这句都没影响。 根据自己的实际工作需要,修改了一下代码,把文件夹中除了汇总 工作簿以外的其他所有工作簿所有工作表的数据都复制到汇总工作簿的汇总表上。- Sub 汇总2()
- Dim mypath As String, myname As String, Dname As String, sh As Worksheet, i As Integer
- Set sh = ActiveSheet
- mypath = ThisWorkbook.Path
- myname = ThisWorkbook.Name
- Dname = Dir(mypath & "\*.xls")
- Application.ScreenUpdating = False
- sh.UsedRange.Offset(1, 0).Clear
- Do While Dname <> ""
- If Dname <> myname Then
- For i = 1 To Worksheets.Count
- With GetObject(mypath & "\" & Dname)
- .Sheets(i).UsedRange.Offset(1, 0).Copy sh.[A65536].End(xlUp).Offset(1)
- .Close False
- End With
- Next
- End If
- Dname = Dir
- Loop
- Application.ScreenUpdating = True
- MsgBox "已经完成复制任务了!"
- End Sub
但是我没有加判断各表否为空表 现在我想向小七请教一个问题:要不要加这个判断,在网上看一些相关的代码的时候,经常会看到有加这个判断的,但是我在测试的时候发现加不加都不影响我最终的汇总结果 。谢谢! |
28楼 E林好汉 |
有点意思! |
29楼 kszcs |
谢谢,收藏 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一