ADODB.Connection 未定义
Posted
技术标签:
【中文标题】ADODB.Connection 未定义【英文标题】:ADODB.Connection undefined 【发布时间】:2010-12-18 02:27:00 【问题描述】:参考Excel VBA to SQL Server without SSIS
完成上述工作后,我从例程中复制了所有全局变量/常量,其中包括
Const CS As String = "Driver=SQL Server;" _ &“服务器=****;” _ &“数据库=****;” _ &“UID=****;” _ &“密码=****” 将 DB_Conn 调暗为 ADODB.Connection 暗淡命令作为 ADODB.Command 将 DB_Status As String 调暗到另一个电子表格中的类似模块中。我也复制到同一个模块子 Connect_To_Lockbox() 如果 DB_Status "打开" 则 设置 DB_Conn = 新连接 DB_Conn.ConnectionString = CS DB_Conn.Open ' 问题! DB_Status = "打开" 万一 End Sub我添加了相同的参考(ADO 2.8)
第一个电子表格仍然有效; DB_Conn.Open 的第二个弹出“运行时错误'-214767259 (80004005)': [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified” 删除两者上的引用、保存文件、重新打开、重新添加引用都无济于事。一个仍然有效,另一个得到错误。
?!?
【问题讨论】:
通过我假设在同一个文档中的另一个电子表格,对吗? @Stevoni:不,它是将模块从一个电子表格复制到另一个电子表格。两个电子表格都必须连接到同一个 SQL Server 实例,因此唯一需要更改的是特定数据库的身份验证。我现在退休了,不能说我是如何解决的,但我知道它最终奏效了。 【参考方案1】:我观察到相同的错误消息,就我而言,没有任何改变。我想知道是否需要重新安装我的 odbc 驱动程序(基于我在网上阅读的内容)。无论如何,重新启动excel就可以了。有时解决方案要简单得多。 :-)
【讨论】:
重启并没有为我解决问题,如问题文本所示。【参考方案2】:当错误弹出时,检查您的“本地”窗口以查看 CS 包含的内容。查看 > 局部变量窗口
【讨论】:
【参考方案3】:问题:编译器找不到您的常量。
解决方案:由于常量位于单独的模块中,您需要将其设置为 Public 以供其他代码查看。
证明: 为了证明这个理论,您可以执行以下操作: 打开一个新的 Excel 电子表格 转到 VBA 设计器并添加一个新模块 在这个模块中放:
Const TestString As String = "Test String"
然后将以下代码添加到 ThisWorkbook:
Public Sub TestString()
MsgBox (TestString)
End Sub
将此返回添加到工作簿并添加一个按钮后,选择“TestString”作为单击时运行的宏。
单击按钮,将出现一个空白消息框。 回到 VBA 设计器,将 Module1 中的 const 更改为 Public 单击电子表格上的按钮,您现在应该会在消息框中看到“测试字符串”。
【讨论】:
不,它们在同一个模块中。抱歉,之前不清楚。【参考方案4】:我意识到这个问题真的很老了。但是为了记录,我想在这里记录我的错误解决方案:这是电子表格中的数据相关错误!一列被格式化为日期并包含值 3000000。将格式更改为数字解决了错误 80004005。
【讨论】:
不是一回事。调试器显示尝试执行打开连接方法时发生错误。以上是关于ADODB.Connection 未定义的主要内容,如果未能解决你的问题,请参考以下文章
PHP ODBC 创建数据库 返回 ADODB.Connection 错误 '800a0e7a'
正确使用CurrentProject.Connection进行ADODB.Connection?
调用 `ADODB.connection.open` 时检查用户的权限