ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: songyichaocn

[求助] 跨工作簿汇总

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-4-12 19:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ilovefreekick 发表于 2015-4-12 13:01
赵老师,我正在学习您的这些代码,我也是长期需要汇总工作薄下面的多个文件内容,一直用的是提取最后一行 ...

If rs.Fields("TABLE_TYPE") = "TABLE" Then '如果字段类型是表
s = Replace(rs("TABLE_NAME").Value, "'", "") '去掉表名中可能可能存在的单引号,如果表名中含有数字,则会出现多余的单引号
If Right(s, 1) = "$" Then '只有真正的工作表名右边第一个字符才是$,程序会把名称误认为是工作表,但右边没有$

TA的精华主题

TA的得分主题

发表于 2015-4-14 13:34 | 显示全部楼层
zhaogang1960 发表于 2015-4-12 19:06
If rs.Fields("TABLE_TYPE") = "TABLE" Then '如果字段类型是表
s = Replace(rs("TABLE_NAME").Value, " ...

谢谢赵老师!

TA的精华主题

TA的得分主题

发表于 2015-4-19 20:30 | 显示全部楼层
zhaogang1960 发表于 2014-3-10 17:19
经测试,ADO+数组法比ADO联合查询速度更快:

        赵老师,关于ADO加数组我还有几个问题不明白:
1、如果每个表格里面有几张表,sheet1、sheet2、sheet3等,每个表都有数据,但是我只要取排序是1的表里面数据如何修改代码?你的这个代码我测试了,其他几个表的数据也会抓过来。
2、关于getrows 这里我想请教一下,是不是arr的第一维是表格里面的列数?而第二维是表格里面的记录数?也就是行数?
              For i = 0 To UBound(arr, 2)
                            m = m + 1
                            brr(m, -1) = m
                            For j = 0 To 11
                                brr(m, j) = arr(j, i)
                            Next
                 Next
我测试了,实际记录数大于11的,也都能取进来,我就没有明白这个意思。arr的维度是怎么确定的?
?两个问题,请赵老师帮忙解答

TA的精华主题

TA的得分主题

发表于 2016-3-31 11:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2016-3-31 12:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-7-4 13:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ilovefreekick 于 2016-7-4 13:52 编辑
zhaogang1960 发表于 2014-3-10 16:20
4楼代码适合于待合并工作簿较少的情况,如果工作薄多达几百个,仅用GetObject打开、关闭它们,其他什么也不 ...

再次学习了!

TA的精华主题

TA的得分主题

发表于 2016-7-4 13:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ilovefreekick 发表于 2015-4-19 20:30
赵老师,关于ADO加数组我还有几个问题不明白:
1、如果每个表格里面有几张表,sheet1、sheet2、 ...

因为这里是取表名称,而不是制定表为1.汇总,所以如果有多余的表肯定会统计进来,搞明白了!

TA的精华主题

TA的得分主题

发表于 2016-7-4 14:07 | 显示全部楼层

老师您好,看了您的代码学习了SQL,依据您这个我也会依葫芦画瓢写多表复制的sql代码了,之前只会用数组复制,速度会慢一些,想学习sql提升速度。这里面有两句不是很明白,请您指导:
sql = Mid(sql, 11)  为什么要截取之前的11位呢?这里面有什么原理还不懂?数据不是12行吗?这个sql也是从0开始?
rs.Open sql, cnn, adOpenKeyset, adLockOptimistic  这句是不是等于Set rs = cnn.Execute(SQL)??请您指导,我还看过rs.open sql,cnn,1,3的,这个又是什么意思呢?

TA的精华主题

TA的得分主题

发表于 2016-7-4 14:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

老师还有一个问题,您这个会不会受50个表的限制?如果是,是否像赵老师那样优化?

TA的精华主题

TA的得分主题

发表于 2016-7-4 14:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

确实受50表的限制,错误提示:查询过于复杂,删除几个表就行了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 21:47 , Processed in 0.057780 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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