ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] ADO引擎地址问题报错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-22 10:20 | 显示全部楼层 |阅读模式
本帖最后由 hw124739523 于 2024-5-22 10:25 编辑

我在VBA里建了一个类模块,类模块命名为“单元格记录集”,并存放以下代码。

  1. Public WithEvents rs As ADODB.Recordset
  2. Private Sub Class_Initialize()
  3.     ' 创建记录集对象
  4.     Set rs = New ADODB.Recordset
  5. End Sub
  6. Private Sub Class_Terminate()
  7.     ' 销毁记录集对象
  8.     Set rs = Nothing
  9. End Sub
  10. Public Sub OpenRecordset(CellRange As Range)
  11.     ' 打开记录集
  12.     rs.Open "SELECT * FROM [" & CellRange.Worksheet.Name & "$" & CellRange.Address & "]", _
  13.             "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";", _
  14.             adOpenStatic, adLockReadOnly, adCmdText
  15. End Sub
复制代码
已经引用了如下对象:
image.png
在另一窗体事件中,想调用类模块,报错的代码在第5行
  1. Private Sub TreeView2_NodeClick(ByVal Node As MSComctlLib.Node)
  2. Dim rs As New 单元格记录集
  3. endrow = Worksheets("②计划管理").Range("a65536").End(3).Row

  4. rs.OpenRecordset Worksheets("②计划管理").Range("A3:U" & endrow) ' 打开表格区域作为记录集的数据源

  5. ' 遍历记录集并输出数据
  6. Do While Not rs.rs.EOF
  7.     Debug.Print rs.rs.Fields(0).Value, rs.rs.Fields(1).Value
  8.     rs.rs.MoveNext
  9. Loop
  10. rs.rs.Close ' 关闭记录集
  11. End Sub
复制代码
最后在测试的时候报错如下:
image.png

TA的精华主题

TA的得分主题

发表于 2024-5-22 10:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个直接把SQL语句写成函数也行啊,写类模块是为了调用方便吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-22 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tanglf188 发表于 2024-5-22 10:35
这个直接把SQL语句写成函数也行啊,写类模块是为了调用方便吗?

是的,后面有很多类似的调用

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-22 10:47 | 显示全部楼层
我新建了一张表单,同样的在表头上面加空行,在新表单上引用记录集却又提示“系统错误 &H80040E37(-2147217865)”

TA的精华主题

TA的得分主题

发表于 2024-5-22 10:51 | 显示全部楼层
你这是连接Access数据库的接口,连接Excel工作表不是这样写的
    Dim Conn_object, Reco_object As Object
    Dim Conn_str As String
    Set Conn_object = CreateObject("ADODB.Connection") '新建数据库连接对象
    Set Reco_object = CreateObject("ADODB.Recordset") '新建记录集对象
    PathStr = ThisWorkbook.FullName   '设置工作簿的完整路径和名称
    Select Case Application.Version * 1    '设置连接字符串,根据版本创建连接
        Case Is <= 11
            Conn_str = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
        Case Is >= 12
            Conn_str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
    End Select
    Conn_object.Open Conn_str    '打开数据库链接

    '执行代码

    Conn_object.Close '关闭数据库连接
    Set Conn_object = Nothing
    Set Reco_object = Nothing

TA的精华主题

TA的得分主题

发表于 2024-5-22 10:53 | 显示全部楼层
hw124739523 发表于 2024-5-22 10:47
我新建了一张表单,同样的在表头上面加空行,在新表单上引用记录集却又提示“系统错误 &H80040E37(-2147217 ...

你这是连接Access的写法,连Excel的我发了在审核

TA的精华主题

TA的得分主题

发表于 2024-5-22 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
问题这不是很明显嘛?SQL语法错误,把多余的$去掉试试

image.jpg

TA的精华主题

TA的得分主题

发表于 2024-5-22 16:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
address返回的格式不正确
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-3 23:41 , Processed in 0.031755 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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