在 VBA 中设置 ODBC 连接字符串
Setting an ODBC connection string in VBA
我创建了一个宏,用于将新的 CommandText 发送到我的 Excel 电子表格中的 ODBC 连接,然后刷新与查询关联的 table 结果。这一直工作正常,但我注意到每次我 运行 宏它都会用一些默认值覆盖连接字符串,这些默认值在我的机器上工作但不会在其他用户的机器上工作,因为他们没有我保存的连接文件。指定服务器地址的更具体的连接字符串在手动输入时有效,但只要宏是 运行.
就会被覆盖
我想我应该让宏在发送新的 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.
在您的 VBA 代码中,将 ODBC;
添加到新连接字符串的 开头。
.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"
我创建了一个宏,用于将新的 CommandText 发送到我的 Excel 电子表格中的 ODBC 连接,然后刷新与查询关联的 table 结果。这一直工作正常,但我注意到每次我 运行 宏它都会用一些默认值覆盖连接字符串,这些默认值在我的机器上工作但不会在其他用户的机器上工作,因为他们没有我保存的连接文件。指定服务器地址的更具体的连接字符串在手动输入时有效,但只要宏是 运行.
就会被覆盖我想我应该让宏在发送新的 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.
在您的 VBA 代码中,将 ODBC;
添加到新连接字符串的 开头。
.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"