ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教下我想用SQL查询除了查询表之外的所有的工作表,这个VBA代码要怎么修改?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-27 19:09 | 显示全部楼层
数组+字典来一个 image.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-27 19:43 | 显示全部楼层
建议还是把所有的工作表的内容重新设计一下数据表的格式,设置成一维表,而且三个年级的表都放到一个工作表内,再进行查询就比较好了。如果调整好数据表,对以后的工作会有帮助。而不是这样一味地想用vba来实现。

TA的精华主题

TA的得分主题

发表于 2022-12-28 13:32 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-28 13:41 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢,已经送花表示心意。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-28 13:41 来自手机 | 显示全部楼层
sdytsxd991122 发表于 2022-12-28 13:32
字典加单元格区域

谢谢,已经送花表示心意。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-28 13:42 来自手机 | 显示全部楼层
洋务德雷 发表于 2022-12-27 19:43
建议还是把所有的工作表的内容重新设计一下数据表的格式,设置成一维表,而且三个年级的表都放到一个工作表 ...

好的,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-28 13:43 来自手机 | 显示全部楼层
shiruiqiang 发表于 2022-12-27 19:09
数组+字典来一个

谢谢,已经送花表示心意。

TA的精华主题

TA的得分主题

发表于 2022-12-28 21:10 | 显示全部楼层
  1. Sub cop()
  2. Dim cnn As Object, SQL$, SQ$, Rs As Object, ar
  3. Dim i&, sht As Worksheet, d As Object
  4. Set cnn = CreateObject("ADODB.Connection")
  5. Set d = CreateObject("Scripting.Dictionary")
  6. cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes;IMEX=1';Data Source=" & ThisWorkbook.FullName
  7. For Each sht In Worksheets
  8.   If sht.Name <> "数据查询" Then
  9.     SQL = "select * from [" & sht.Name & "$b3:l] where 姓名 is not null"
  10.     d(SQL) = ""
  11.   End If
  12. Next
  13.   If d.Count Then
  14.     SQL = Join(d.Keys, " UNION ALL ")
  15.     SQ = "select 姓名 from [数据查询$b3:l] where 姓名 is not null"
  16.     SQ = "select b.* from (" & SQ & ")a left join (" & SQL & ")b on b.姓名=a.姓名"
  17.     Set Rs = cnn.Execute(SQ)
  18.   End If
  19.     With Worksheets("数据查询")
  20.       .Activate
  21.       .Range("c4:l15").ClearContents
  22.       .Range("b4").CopyFromRecordset Rs
  23.     End With
  24.   
  25. cnn.Close
  26. Set cnn = Nothing
  27. Set Rs = Nothing
  28. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 07:07 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 00:30 , Processed in 0.039018 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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