在VBA中设置ODBC连接字符串

6
我创建了一个宏,可以在Excel电子表格中向ODBC连接发送新的CommandText,然后刷新与查询相关的结果表。这一直很好用,但我注意到每次运行宏时,它都会用一些默认值覆盖连接字符串,这些默认值在我的机器上工作,但在其他用户的机器上不起作用,因为他们没有保存的连接文件。手动输入指定服务器地址的更具体连接字符串可以正常工作,但每次运行宏时都会被覆盖。
我想让宏在发送新的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
< p > .CommandText 仍然可以正常更新,但是 .Connection 抛出了运行时错误 1004:应用程序定义或对象定义的错误。

< p >你知道我在这里做错了什么吗?谢谢提前。

1个回答

5
在您的VBA代码中,在新连接字符串开头添加ODBC;
.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"

谢谢,它起作用了!有趣的是,在运行宏后,该部分不会显示在连接属性窗口中。但它一定有影响,因为如果省略该部分,它就无法工作。 - CactusCake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接