- Dettagli
- Scritto da Alessandra
- Pubblicato: 13 Aprile 2012
- Visite: 12826
Abbiamo visto un post precedente quanto possono essere utili le query di Excel. Sono uno strumento potente e spesso poco utilizzato. Per renderlo ancora più efficace, può essere necessario un piccolo correttivo, dovuto al fatto, che Excel memorizza il percorso assoluto del file su cui si esegue la query, questo anche se si esegue la query sui dati contenuti nello stesso file in cui ne si chiede la restituzione (magari filtrati). Questo fa si che, anche se si ha a che fare con un file solo, se si sposta questo file, le query potrebbero non funzionare più.
Per risolvere facilmente il problema, basta eseguire, all'apertura della cartella di lavoro che contiene la query, del codcie VBA che aggiorna il nome del file sui cui si esegue la query, recuperandolo dal nome e dal percorso del file in uso (ActiveWorkbook.Path, ActiveWorkbook.Name)
Private Sub Workbook_Open()
Dim strPercoso As String
Dim strFile As String
strPercorso = ActiveWorkbook.Path
strFile = ActiveWorkbook.Name
strPercorsoCompleto = strPercorso & "/" & strFile
strConn = "ODBC; DSN=Excel Files;DBQ=" & strPercorsoCompleto & ";DefaultDir=" & _
strPercorso & ";DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"
For Each connessione In ActiveWorkbook.Connections
With connessione.ODBCConnection
.BackgroundQuery = True
.Connection = strConn
.RefreshOnFileOpen = True
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
connessione.Refresh
Next
End Sub
Questo codice va scritto nel foglio di codice relativo alla cartella di lavoro. Non per uno specifico foglio
Commenti
mi dispiace, ma mi è dificile capire il perchè...
RSS feed dei commenti di questo post.