ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 30563|回复: 15

[已解决] Excel调取access数据进行查询,如何实现?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-13 11:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 qjt_凛冬将至 于 2014-7-16 11:07 编辑

基本情况是,有一个很大的access文件,需要做一个查询程序,打算在Excel中做。由于数据太多,无法全部导入到Excel中,就想通过Excel连接access来实现。由于还要做一个窗体来进行显示,单我不知道如何直接将查询结果显示到窗体中,就打算先把查询结果放到单元格内,再从单元格把结果显示到窗体内。所以想问一下如何用Excel对access进行查询,并把查询结果显示到相应单元格内?
关于Excel连接access,我是直接通过数据-自access-仅创建连接  ,这样可以吗?
QQ截图20140713105620.png Excel连接到access进行查询.zip (530.53 KB, 下载次数: 1742)



TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-13 15:16 | 显示全部楼层
可能我描述太复杂了,简单来说就是如何通过Excel查询access内的数据。

TA的精华主题

TA的得分主题

发表于 2014-7-13 17:22 | 显示全部楼层
是用ADO连接Access查询,请在论坛中搜索

TA的精华主题

TA的得分主题

发表于 2014-7-13 17:42 | 显示全部楼层
qjt_凛冬将至 发表于 2014-7-13 15:16
可能我描述太复杂了,简单来说就是如何通过Excel查询access内的数据。

在Excel中用ADO连接Access数据库:
Set cnn = CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\data of shipping.accdb"
再编写SQL查询语句,把查询结果复制到工作表中

TA的精华主题

TA的得分主题

发表于 2014-7-13 17:44 | 显示全部楼层
本帖最后由 zhaogang1960 于 2014-7-13 17:45 编辑

数据表中的Builder_ID字段有重复值,下面程序仅查询第一条Builder_ID所对应的记录(请注意,D列数据不能超过4500行,否则会出现错行):
  1. Sub 宏1()
  2.     Dim cnn As Object
  3.     Dim SQL As String
  4.     Set cnn = CreateObject("ADODB.Connection")
  5.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\data of shipping.accdb"
  6.     SQL = "select b.Acquired_Price,b.Builder,b.Builder_CoD from [Excel 12.0;Database=" & ThisWorkbook.FullName _
  7.         & ";].[" & ActiveSheet.Name & "$d1:d" & Range("d" & Rows.Count).End(xlUp).Row _
  8.         & "] a left join (select Acquired_Price,Builder,Builder_CoD,first(Builder_ID) as Builder_ID from Sheet1 group by Acquired_Price,Builder,Builder_CoD) b on a.Builder_ID=b.Builder_ID"
  9.     Range("A2").CopyFromRecordset cnn.Execute(SQL)
  10.     cnn.Close
  11.     Set cnn = Nothing
  12. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-13 18:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2014-7-13 17:44
数据表中的Builder_ID字段有重复值,下面程序仅查询第一条Builder_ID所对应的记录(请注意,D列数据不能超过 ...

谢谢!Microsoft.ACE.OLEDB.12.0 是条明路啊,我本来一直在用Microsoft.jet.OLEDB.4.0连接但是却不成功。代码我等下好好研究,但请问为什么不能超过4500行?有什么解决办法吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-13 18:01 | 显示全部楼层
taller 发表于 2014-7-13 17:22
是用ADO连接Access查询,请在论坛中搜索

谢谢!!!

TA的精华主题

TA的得分主题

发表于 2014-7-13 18:12 | 显示全部楼层
qjt_凛冬将至 发表于 2014-7-13 18:00
谢谢!Microsoft.ACE.OLEDB.12.0 是条明路啊,我本来一直在用Microsoft.jet.OLEDB.4.0连接但是却不成功。 ...

原因是生成的查询会根据某个字段重新进行排序,使得查询中的Builder_ID字段与D列Builder_ID顺序不同
解决办法:用查询中的Builder_ID字段覆盖D列Builder_ID,缺点是顺序发生变化了

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-13 20:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2014-7-13 18:12
原因是生成的查询会根据某个字段重新进行排序,使得查询中的Builder_ID字段与D列Builder_ID顺序不同
解决 ...

不好意思,再请问一下,如果我只是想查询一项Builder_ID(这个会通过复选框输入)对应的信息,应该怎么样写SQL代码
因为数据太多,如果全部导入到Excel太慢了,所以只要导入想查询的那条就可以了。

TA的精华主题

TA的得分主题

发表于 2014-7-13 21:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
qjt_凛冬将至 发表于 2014-7-13 20:08
不好意思,再请问一下,如果我只是想查询一项Builder_ID(这个会通过复选框输入)对应的信息,应该怎么样 ...

没有理解,请上传附件说明
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 07:38 , Processed in 0.043962 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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