Domanda

Usiamo Microsoft Query per recuperare i dati da diversi database per creare metriche di gestione (vale a dire all'interno di Excel, accedere a dati ... Importa dati esterni ... Nuova query su database). La query SQL e parametri (stringa per lo più conn) vengono memorizzati automaticamente da Excel all'interno del foglio elettronico.

Tuttavia, abbiamo recentemente spostato uno dei nostri database in un nuovo server. Di conseguenza, Excel ci spinge per una nuova connessione ODBC quando si cerca di aggiornare i dati, ma non accetterà i nuovi valori. Siamo in grado di creare nuove query bene, quindi la connessione ODBC è impostato correttamente, ma non possiamo cambiare qualsiasi domanda.

C'è un modo per cambiare programatically o in altro modo l'indirizzo IP all'interno di queste impostazioni? Ho provato a cambiare il file xls in un editor esadecimale (gli indirizzi IP sono visibili lì), ma poi dice la cartella di lavoro è corrotto.

È stato utile?

Soluzione

Se è necessario modificare la stringa di connessione delle query, questa macro cambierà per tutte le query nella cartella di lavoro attiva (non c'è bisogno di memorizzare il codice nella cartella di lavoro da modificare).

includo due stringhe di connessione di esempio - si fornisce il DSN, si fornisce il server / database. Se il DSN è bene per la creazione di nuove interrogazioni, provare l'uno DSN prima. Regolare versione di SQL Server se si utilizza quello.

Inoltre, si ha la sicurezza standard (uid, pwd) e la sicurezza di altri usi Windows-based (connessione trusted). Mix and match a seconda dei casi.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top