在VBA中设置ODBC连接字符串

时间:2015-01-29 16:09:15

标签: excel vba odbc 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

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

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

1 个答案:

答案 0 :(得分:5)

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

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