在VBA中设置ODBC连接string

我创build了一个macros,它向我的Excel电子表格中的ODBC连接发送一个新的CommandText,然后刷新与查询关联的结果表。 这一直工作正常,但我注意到,每次我运行macros时,它会覆盖连接string与我的机器上工作的一些默认值,但不会在其他用户的机器上工作,因为他们没有保存的连接文件我有。 指定服务器地址的更具体的连接string在手动input时起作用,但在运行macros时将被覆盖。

我想我只是在macros发送新的CommandText的同时写连接string,但我遇到了错误。

我的代码如下:

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。

在你的VBA代码中,添加ODBC; 到新的连接string的开头

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