参考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驱动程序管理器]未找到数据源名称且未指定默认驱动程序” 删除两者上的引用,保存文件,重新打开,重新添加引用都没有帮助。一个仍然有效,另一个得到错误。
?!
答案 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。