Excel精英培训网

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

SQL多工作簿单一工作表数据查询

[复制链接]
发表于 2020-6-8 19:50 | 显示全部楼层 |阅读模式
2学分
附件是在某好心版主那儿收集到的,但自己是小白,想把多工作簿多工作表数据查询改成多工作簿单一工作表数据查询,每个工作簿只有一张工作表,应该怎样修改代码呢?谢谢大神们!!!

多工作簿多工作表数据查询参考答案(通用、简易1、简易2).zip

428.38 KB, 下载次数: 20

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2020-6-9 09:07 | 显示全部楼层
1、别改了,他的版本你估计用不了,在我电脑就无法运行;
2、这种查询是与数据结构紧密相关的,你的数据结构未必就与代码设定的一致;
3、如果你电脑能运行,你的数据结构又是与他完全一致的,那么我建议你用第一个“通用”,它读取数据似乎是弹性的:
     For Each tb1 In cat.Tables    '读取所有的表,如果只有一个表应该也没关系


回复

使用道具 举报

 楼主| 发表于 2020-6-9 09:21 | 显示全部楼层
hfwufanhf2006 发表于 2020-6-9 09:07
1、别改了,他的版本你估计用不了,在我电脑就无法运行;
2、这种查询是与数据结构紧密相关的,你的数据结 ...

谢谢~~
回复

使用道具 举报

发表于 2020-6-9 09:40 | 显示全部楼层

我再多解释下:1、他这个版本使用了ADOX,你可以把它看成是个高级的技术,但也是个冷门的技术,只有那些研究很深的人才用。要改他这个代码还需要去学习ADOX的使用,我就不会,其他人会不会我不知道,我估计很少吧;
2、之所以使用这类技术就是想避免用excel打开文件产生的窗口效应,还会有明显的窗口闪烁。但这类技术也会明显的副作用,他是与时代结合的产物,他那个时代可能是个很先进的东西,但微软excel版本在不断升级,很多数据接口也在不断变化,导致他这个版本在目前默认状态下用不了。不是真的不能用,是他所引用的工具库没有安装或者没有被正确使用,我不懂这个接口所需要的库文件,所以就改不了;
3、其实我还是认为用默认的 workbooks.open打开文件是最好的,虽然有窗口闪烁,但兼容性最好,不管什么版本的excel,workbooks.open都是万能的,因为它是微软直接负责维护的,这个接口的修订微软会同步进行,不然新版本的excel就不能发布。而其他接口对excel的引用,那就不好讲了,时间越久,兼容性就越差,对于一般应用而言,没必要使用太花哨的技术;

回复

使用道具 举报

 楼主| 发表于 2020-6-9 16:18 | 显示全部楼层
hfwufanhf2006 发表于 2020-6-9 09:40
我再多解释下:1、他这个版本使用了ADOX,你可以把它看成是个高级的技术,但也是个冷门的技术,只有那些 ...

谢谢您~~~其实我就是想实现在总表中,通过检索人名,罗列出所有在分表中出现的这个人的某些数据(但是分表的工作簿只有一张工作表)。他的这个例子就很符合我想实现的功能,但是我不会改编他的这个程序,即便是通用的那个代码我也不会改  目前我还正在学习兰版的课程。。如果您有空能帮我改编一下,那就万分感谢了!!!
回复

使用道具 举报

发表于 2020-6-9 16:43 | 显示全部楼层
云雾云绕 发表于 2020-6-9 16:18
谢谢您~~~其实我就是想实现在总表中,通过检索人名,罗列出所有在分表中出现的这个人的某些数据(但是分 ...

你可以上传具体的文件,一定是要你实际的数据格式,我抽空帮你弄一下。他那个adoX我是不会的,我可以用别的简单点的方法来做。一般小的应用也不需要那么讲究,能用就行;

回复

使用道具 举报

 楼主| 发表于 2020-6-9 22:08 | 显示全部楼层
hfwufanhf2006 发表于 2020-6-9 16:43
你可以上传具体的文件,一定是要你实际的数据格式,我抽空帮你弄一下。他那个adoX我是不会的,我可以用别 ...

已上传至附件,谢谢您~~~{:9_303:}

汇总检索文件.zip

25.65 KB, 下载次数: 12

回复

使用道具 举报

发表于 2020-6-10 09:08 | 显示全部楼层
云雾云绕 发表于 2020-6-9 22:08
已上传至附件,谢谢您~~~

1、你这是个很小数据量的查询,所以我就没用sql,只是数组循环走一遍就够了,简单,你自己也能灵活改;2、所有的字段读取我都标注了,如果发现读取错位了,你自己改一下;
3、理论上代码也能读取所有的表,1个或多个表都是没问题的,只要格式相同就行;
4、你注意观察,运行时窗口的标题文字是有变化的,带有轻微的闪烁,这就是.open与adoX的主要视觉差别,另外,sql速度也要快很多,这是相对几万行以上的数据量来说的,1万行以下的数据量我觉得怎么弄都行,所以我也没去想效率的事情,这样代码就很小,差不多就30行的样子,你可以根据自己需要适当变化;

汇总检索.rar

20.75 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2020-6-10 15:46 | 显示全部楼层
hfwufanhf2006 发表于 2020-6-10 09:08
1、你这是个很小数据量的查询,所以我就没用sql,只是数组循环走一遍就够了,简单,你自己也能灵活改;2 ...

我工作中数据量都不算大,这个太棒啦,万分感谢~~~{:9_305:}
回复

使用道具 举报

 楼主| 发表于 2020-6-10 15:59 | 显示全部楼层
hfwufanhf2006 发表于 2020-6-10 09:08
1、你这是个很小数据量的查询,所以我就没用sql,只是数组循环走一遍就够了,简单,你自己也能灵活改;2 ...

最近已经学习了数组,您的代码确实很简单灵活易懂,对于我的日常很够用了,谢谢~~  像这种多表查找数据,不管用什么语句写代码,都是需要所有子表的格式相同吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 11:56 , Processed in 0.284376 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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