ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] CopyFromRecordset无法copy查询结果到excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-23 18:23 | 显示全部楼层 |阅读模式
数据库文件:test.sqlite3,里面有两张表:基本信息表,设备材料库。同样的代码读入基本信息没有问题,设备材料库的内容无论如何读不进excel,但在sqlite3终端用同样的SQL语句 “SELECT * FROM 设备材料库;” 就没有问题,求大神帮忙

  1. Sub test()
  2.     Dim conn As Object
  3.     Set conn = CreateObject("adodb.connection")
  4.     Dim connStr As String
  5.     connStr = "Driver={SQLite3 ODBC Driver};Database=" & ThisWorkbook.Path & "\test.sqlite3"
  6.     conn.Open (connStr)
  7.     Dim rst As Object
  8.     Set rst = CreateObject("adodb.recordset")
  9.    
  10.     Call rst.Open("SELECT * FROM 设备材料库;", conn)
  11.     Call ThisWorkbook.Sheets(1).Range("A1").CopyFromRecordset(rst)
  12.     rst.Close
  13.     conn.Close
  14. End Sub
复制代码


test.zip

50.75 KB, 下载次数: 9

示例数据及代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-23 20:03 | 显示全部楼层
折腾大半天,在stackOverflow上找到答案了:
在 set rst = ……后面增加如下代码:
  1. rst.CursorType = 1
复制代码


https://stackoverflow.com/questi ... ugh-multiple-record

TA的精华主题

TA的得分主题

发表于 2019-5-24 05:08 来自手机 | 显示全部楼层
zhn158 发表于 2019-5-23 20:03
折腾大半天,在stackOverflow上找到答案了:
在 set rst = ……后面增加如下代码:


用的是那个odbc的驱动,没有richclient的?

TA的精华主题

TA的得分主题

发表于 2019-5-24 05:27 来自手机 | 显示全部楼层
本帖最后由 zpy2 于 2019-5-24 09:08 编辑

用sqlite 搞定年级排名,班级排名
http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=1477182&pid=9939264&mobile=2
参考一下吧
http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=1477182&pid=9939264

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-24 08:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
http://www.ch-werner.de/sqliteodbc/
在这里下的odbc

richclient不了解,能给个资料了解一下吗

TA的精华主题

TA的得分主题

发表于 2019-5-24 09:07 来自手机 | 显示全部楼层
zhn158 发表于 2019-5-24 08:52
http://www.ch-werner.de/sqliteodbc/
在这里下的odbc


你这个链接,我打不开啊,可能IP被封了,你看我发的链接里面有 VBrichclient5的sqlite驱动,应该没有你说的问题。
另外,你这个odbc支持窗口函数吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-24 09:17 | 显示全部楼层
zpy2 发表于 2019-5-24 09:07
你这个链接,我打不开啊,可能IP被封了,你看我发的链接里面有 VBrichclient5的sqlite驱动,应该没有你说 ...

我需要的功能很简单,不了解窗口函数。应该不支持

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-24 10:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zpy2 发表于 2019-5-24 09:07
你这个链接,我打不开啊,可能IP被封了,你看我发的链接里面有 VBrichclient5的sqlite驱动,应该没有你说 ...

运行你的代码在CNN.CreateNewDB处报错:Activex部件不能创建对象
我用的是win10 64位,已经注册了vbrichclient
请问怎么解决

TA的精华主题

TA的得分主题

发表于 2019-5-24 10:47 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhn158 发表于 2019-5-24 10:05
运行你的代码在CNN.CreateNewDB处报错:Activex部件不能创建对象
我用的是win10 64位,已经注册了vbrich ...

经注册了vbrichclient
请问怎么解决
64位office吗?这个驱动应该是32位的,会不会不兼容啊!
VB6如果方便的话可以试试,还有win10最好管理员运行。

TA的精华主题

TA的得分主题

发表于 2019-5-24 10:52 来自手机 | 显示全部楼层
zpy2 发表于 2019-5-24 10:47
经注册了vbrichclient
请问怎么解决
64位office吗?这个驱动应该是32位的,会不会不兼容啊!


如果采用引用方式使用,则需要将 vbRichClient5.dll 和 vb_cairo_sqlite.dll 一起复制到程序目录,并
对 vbRichClient5.dll 进行注册。
如果采用免注册方法使用,则还需要将 DirectCOM.dll 一并复制到程序目录或System目录。

不管是否注册,首先添加对vbRichClient5的引用,因为代码用的前期绑定

http://club.excelhome.net/thread-1358617-1-1.html
是这个帖子的方法吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-26 07:22 , Processed in 0.038456 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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