TOP

Query SQL utilizzando VBA Excel

Descrizione

Esistono molti modi per inserire dati da fonti esterne in un foglio di lavoro Excel . In questo articolo vedremo come eseguire query sui dati da un file di database MS Access e da un file Excel usando SQL In VBA . Sì, mescoleremo un po' le cose SQL con VBA ! Ed è meglio di quanto potresti pensare!

SQL sta per Structured Query Language (linguaggio di query strutturato) ed è un linguaggio utilizzato per recuperare informazioni da database (come MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL e altri).

È inoltre possibile ottenere dati da Internet, file di testo o altri Excel o CSV File.


1. Query SQL da Excel VBA al file MS Access

Quindi abbiamo bisogno di una connessione al database (variabile varConn nella macro sottostante) e Interrogazione SQL (variabile varSQL ) per automatizzare il recupero dei dati dal database per il report. Nell'esempio qui sotto c'è Interrogazione SQL , che riceve i dati da un piccolo database in MS Access.

Clic caricare il database MS Access (test.mdb) .

Il file MS Access sarà simile al seguente:

Scriviamo la nostra macro che verrà eseguita Interrogazione SQL .

Apri il menù Servizio - Macro - Editor Visual Basic , inserire il nuovo modulo (menù Insert - Module ) e copia lì il testo della macro:

Sub SQLQuery_1()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Fai clic su Salva e torna a Excel. Scegli dal menù Visualizza - Macro (Alt+F8) il nome della nostra macro " SQLQuery_1 ". Apparirà una finestra di dialogo, premerla Banca dati... , cerca il nostro file di accesso e fai clic su ОК .

Ora possiamo vedere che la nostra query macro ha recuperato le colonne Month , Product E City dal tavolo Sumproduct dalla banca dati test.mdb nel file Excel.

2. Query SQL da VBA al file chiuso Excel

Allo stesso modo, possiamo ottenere dati da un normale file Excel come da un database. Per questo è necessario riscrivere leggermente il codice della nostra macro e modificare il driver di connessione da Access a Excel.

Esportiamo la tabella Sumproduct da Access in Excel e salvare il file. Successivamente, inseriamo il nostro codice modificato in un nuovo modulo ed eseguiamo la macro:

Sub SQLQuery_2()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Apparirà una finestra in cui possiamo selezionare il nostro file Excel (dovrebbe chiamarsi Sumproduct.xlsx o con altra estensione). Lo troviamo e lo selezioniamo. Premiamo ОК e otteniamo gli stessi dati del file Access.

Articoli sull'argomento: