Frage

Wir verwenden Microsoft Query Daten aus verschiedenen Datenbanken abrufen Management-Metriken erstellen (das heißt innerhalb von Excel, gehen Sie zu Daten ... Externe Daten importieren ... Neue Datenbankabfrage). Die SQL-Abfrage und Parameter (meist conn string) werden automatisch von Excel in der Tabelle gespeichert.

Allerdings haben wir vor kurzem zog eine unserer Datenbanken auf einen neuen Server. Als Ergebnis fordert Excel uns für eine neue ODBC-Verbindung beim Versuch, die Daten zu aktualisieren, aber es wird die neuen Werte nicht akzeptieren. Wir können neue Abfragen fein erstellen, so dass die ODBC-Verbindung korrekt eingerichtet ist, aber wir können keine Abfragen ändern.

Gibt es eine Möglichkeit programmgesteuert oder auf andere Weise die IP-Adresse innerhalb dieser Einstellungen ändern? Ich habe versucht, die xls-Datei in einem Hex-Editor zu ändern (die IP-Adressen sind dort sichtbar), aber es sagt, dann wird die Arbeitsmappe beschädigt ist.

War es hilfreich?

Lösung

Wenn Sie die Verbindungszeichenfolge Ihrer Abfragen zu ändern brauchen, ist dieser Makro es für alle Abfragen in der aktiven Arbeitsmappe ändern wird (Sie müssen den Code nicht speichern in der Arbeitsmappe geändert werden).

I sind zwei Beispielverbindungszeichenfolgen - eine liefert die dsn, einen liefert der Server / Datenbank. Wenn Ihr DSN in Ordnung ist, wenn neue Abfragen erstellen, versuchen, den DSN zuerst. Passen Sie SQL Server Version, wenn Sie diese verwenden.

Auch hat man Standardsicherheits (uid, pwd) und die andere verwenden Windows-basierte Sicherheit (vertrauenswürdige Verbindung). Mix and Match als angemessen.

Sub ChangeAddress()

Dim qt As QueryTable
Dim wks As Worksheet

Const strNEW_CONN_DSN As String = "ODBC;DSN=MyDSN;Description=MyDescription;UID=myid;PWD=mypwd;"

Const strNEW_CONN_SQL as String = "Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDB;Trusted_Connection=yes;"

For Each wks In ActiveWorkbook.Worksheets
    For Each qt In wks.QueryTables
        qt.Connection = strNEW_CONN_DSN
    Next qt
Next wks
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top