ADODB.Connection未定义

时间:2009-11-18 23:03:19

标签: excel vba adodb

参考Excel VBA to SQL Server without SSIS

完成上述工作后,我将例程中的所有全局变量/常量(包括

    Const CS As String = "Driver={SQL Server};" _
                       & "Server=****;" _
                       & "Database=****;" _
                       & "UID=****;" _
                       & "PWD=****"
    Dim DB_Conn As ADODB.Connection
    Dim Command As ADODB.Command
    Dim DB_Status As String
)复制到另一个电子表格中的类似模块中。我也复制到同一模块
Sub Connect_To_Lockbox()
    If DB_Status <> "Open" Then
        Set DB_Conn = New Connection
        DB_Conn.ConnectionString = CS
        DB_Conn.Open  ' problem!
        DB_Status = "Open"
    End If
End Sub
我添加了相同的参考(ADO 2.8)

第一个电子表格仍有效; DB_Conn.Open的秒数弹出“运行时错误'-214767259(80004005)':[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序” 删除两者上的引用,保存文件,重新打开,重新添加引用都没有帮助。一个仍然有效,另一个得到错误。

?!

4 个答案:

答案 0 :(得分:1)

我发现了同样的错误信息,在我的情况下没有任何改变。我想知道我的odbc驱动程序是否需要重新安装(基于我在线阅读的内容)。在任何情况下,重启excel都可以解决问题。有时解决方案更简单。 : - )

答案 1 :(得分:0)

当弹出错误时,请检查“本地”窗口以查看CS包含的内容。查看&gt;当地人窗口

答案 2 :(得分:0)

问题:编译器找不到您的常量。

解决方案:如果常量位于单独的模块中,则需要将其设置为“公共”以供其他代码查看。

<强>证明:
为了证明这一理论,您可以执行以下操作: 打开一个新的Excel电子表格 转到VBA设计器并添加新模块 在这个模块中放:

Const TestString As String = "Test String"

然后将以下代码添加到ThisWorkbook:

Public Sub TestString()
   MsgBox (TestString)
End Sub

将此返回添加到工作簿并添加一个按钮后,选择“TestString”作为单击时要运行的宏。

单击按钮,将出现一个空白消息框。 返回VBA设计器并将Module1中的const更改为Public 单击电子表格上的按钮,您现在应该在消息框中看到“测试字符串”。

答案 3 :(得分:0)

我意识到这个问题真的很老了。但是为了记录,我想在这里记录我的错误解决方案:这是电子表格中与数据相关的错误!列被格式化为日期并包含值3000000.将格式更改为数字解决了错误80004005。