Esistono molti modi per inserire dati da fonti esterne in un foglio di lavoro
È inoltre possibile ottenere dati da Internet, file di testo o altri Excel o
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
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
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
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