【问题标题】:ADODB.Connection undefinedADODB.Connection 未定义
【发布时间】: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 实例,因此唯一需要更改的是特定数据库的身份验证。我现在退休了,不能说我是如何解决的,但我知道它最终奏效了。

标签: excel vba adodb


【解决方案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。

    【讨论】:

    • 不是一回事。调试器显示尝试执行打开连接方法时发生错误。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多