如何同时更改多个查询中的UserId / Password

时间:2017-10-20 14:24:04

标签: excel excel-vba vba

我有一个工作簿,其中包含对外部数据库的多个查询。对于所有这些,我让Excel保存UserId和Password(目前不是一个很大的安全问题)。 我经常需要针对不同的数据库模式运行相同的查询集,即使用不同的UserId / Password登录。 是否有办法(即使使用VBA)同时为我的所有查询设置相同的UserId /密码,而无需修改每个查询的属性?

提前致谢

1 个答案:

答案 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