在VBA中设置ODBC连接字符串

Cac*_*ake 5 excel odbc vba connection-string

我创建了一个宏,它将新的CommandText发送到Excel电子表格中的ODBC连接,然后刷新与查询关联的结果表.这一直很好,但我注意到每次运行宏时它会覆盖一些默认值的连接字符串,这些默认值在我的机器上运行但不能在其他用户的机器上运行,因为它们没有保存的连接文件我有.指定服务器地址的更具体的连接字符串在手动输入时有效,但在运行宏时会被覆盖.

我想我会在发送新的CommandText的同时让宏写入连接字符串,但是我遇到了错误.

我的代码如下:

Sub NewData()

Dim lStr As String
lStr = ""
lStr = lStr & " USE myDBname; "
lStr = lStr & " WITH X AS ("
lStr = lStr & " SELECT"
lStr = lStr & " column1, column2, column3, etc"
lStr = lStr & " FROM"
lStr = lStr & " etc. etc. etc."

With ActiveWorkbook.Connections("PayoffQuery").ODBCConnection

.CommandText = lStr
.Connection = "SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"

End With

End Sub
Run Code Online (Sandbox Code Playgroud)

.CommandText仍然可以正常更新,但.Connection会引发运行时错误1004:应用程序定义或对象定义的错误.

知道我在这里做错了吗?TIA.

Exa*_*Box 5

在您的VBA代码中,添加ODBC;到新连接字符串的开头.

.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"
Run Code Online (Sandbox Code Playgroud)