0

在没有 SSIS 的情况下将 Excel VBA引用到 SQL Server

在完成上述工作后,我从例程中复制了所有全局变量/常量,其中包括

    Const CS As String = "Driver={SQL Server};" _
                       &“服务器=****;” _
                       &“数据库=****;” _
                       &“UID=****;” _
                       &“密码=****”
    将 DB_Conn 调暗为 ADODB.Connection
    暗淡命令作为 ADODB.Command
    将 DB_Status 调暗为字符串
到另一个电子表格中的类似模块中。我也复制到同一个模块
子 Connect_To_Lockbox()
    如果 DB_Status <> "打开" 则
        设置 DB_Conn = 新连接
        DB_Conn.ConnectionString = CS
        DB_Conn.Open ' 问题!
        DB_Status = "打开"
    万一
结束子
我添加了相同的参考(ADO 2.8)

第一个电子表格仍然有效;DB_Conn.Open 的第二个弹出“运行时错误'-214767259 (80004005)':[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”删除两者的引用,保存文件,重新- 打开,重新添加引用没有帮助。一个仍然有效,另一个得到错误。

?!?

4

4 回答 4

1

我观察到相同的错误消息,就我而言,没有任何改变。我想知道是否需要重新安装我的 odbc 驱动程序(基于我在网上阅读的内容)。无论如何,重新启动excel就可以了。有时解决方案要简单得多。:-)

于 2016-03-21T15:56:59.480 回答
0

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

于 2012-11-27T13:05:19.533 回答
0

当错误弹出时,检查您的“本地”窗口以查看 CS 包含的内容。查看 > 局部变量窗口

于 2009-11-19T20:03:24.057 回答
0

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

解决方案:由于常量位于单独的模块中,您需要将其设置为 Public 以便其他代码看到它。

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

Const TestString As String = "Test String"

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

Public Sub TestString()
   MsgBox (TestString)
End Sub

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

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

于 2009-11-19T20:29:47.000 回答