2017-10-20 14 views
0

J'ai un classeur avec plusieurs requêtes à un db externe. Pour chacun d'entre eux, je laisse Excel enregistrer à la fois UserId et Password (pas un gros problème de sécurité, pour le moment). Très souvent, j'ai besoin d'exécuter le même ensemble de requêtes sur différents schémas db, c'est-à-dire en utilisant différents UserId/Password (s). Existe-t-il un moyen (même avec VBA) de définir le même UserId/Password pour toutes mes requêtes simultanément, sans avoir à modifier les propriétés de chaque requête?comment modifier UserId/mot de passe dans plusieurs requêtes simultanément

Merci à l'avance

+0

Je ne pense pas que ce soit possible sans modifier les propriétés de connexion. Record Macro peut être utile. – Slai

Répondre

0

Après quelques essais, je Assemblez le code VBA suivant, qui semble faire ce que je dois.

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