我有一个工作簿,其中包含对外部数据库的多个查询。对于所有这些,我让Excel保存UserId和Password(目前不是一个很大的安全问题)。 我经常需要针对不同的数据库模式运行相同的查询集,即使用不同的UserId / Password登录。 是否有办法(即使使用VBA)同时为我的所有查询设置相同的UserId /密码,而无需修改每个查询的属性?
提前致谢
答案 0 :(得分:0)
经过一些尝试,我将以下VBA代码放在一起,这似乎是我需要的。
Sub UpdateCredentials(ByVal userid As String, ByVal userpwd As String)
Dim ConnString As String
Dim newString As String
Dim ws As Worksheet
For Each ws In Worksheets
For o = 1 To ws.ListObjects.Count
ConnString = ws.ListObjects(o).QueryTable.Connection
i1 = InStr(1, ConnString, "UID", vbTextCompare)
i2 = InStr(1, ConnString, "PWD", vbTextCompare)
If i2 = 0 Then i2 = i1 + 2
i3 = InStr(i2, ConnString, ";", vbTextCompare)
newString = Left(ConnString, i1 + 3) + userid + ";PWD=" + userpwd + ";" + Right(ConnString, Len(ConnString) - i3)
ws.ListObjects(o).QueryTable.Connection = newString
Next o
Next
End Sub