【发布时间】:2013-12-29 12:56:33
【问题描述】:
我只是想让 VBA 更新 OLEDB 连接字符串。当我单步执行代码时,我没有收到任何错误,但连接刷新失败,当我检查 UI 中的连接字符串时,很明显我的代码根本没有更改它(因此刷新失败)。我错过了什么?
代码如下:
Sub UpdateQueryConnectionString(ConnectionString As String)
With ActiveWorkbook.Connections("Connection Name"). _
OLEDBConnection
.Connection = StringToArray(ConnectionString)
End With
ActiveWorkbook.Connections("Connection Name").Refresh
End Sub
输入的 ConnectionString 是:
ConnectionString = = "Provider=SLXOLEDB.1;Data Source=SERVER;Initial Catalog=DATABASE" _
& ";User ID=" & Username & ";Password=" & Password & _
";Persist Security Info=True;Extended Properties=" _
& Chr(34) & "PORT=1706;LOG=ON;CASEINSENSITIVEFIND=ON;INCLUDECALCFIELDS=ON;" & Chr(34)
函数 StringToArray 直接从 http://support.microsoft.com/kb/105416 上的示例 4 中复制
【问题讨论】:
-
我建议您仔细检查 locals 窗口中的每个属性以确保它们确实存在 - 我不知道语法。考虑到 ConnectionString 是一个字符串这一事实,Array(ConnectionString) 似乎是一种奇怪的语法。
-
@KimGysen 似乎是对的 - 这是什么
array(),尝试不使用array(),只使用ConnectionString。 -
我认为数组部分是由宏记录器生成的,正如@KimGysen 所说,不适用于此处。只需
ConnectionString即可尝试。 -
我在没有 Array() 的情况下尝试过,但出现运行时错误。一点点挖掘发现了这个MS Support article。请参见示例 4。该数组用于阻止超过 255 个字符的字符串被截断,但我认为我做的不对。我会将问题中的代码更新为我现在所做的。 UI 仍然没有显示对连接字符串的更改(正确或错误)。
-
我没有计算字符数,但您的连接字符串看起来没有超过 255 个字符的限制?
标签: vba excel connection-string excel-2010