Importare una tabella di Access in Excel con VBA (immagini e codice)
Che cos'è?Questo codice VBA aiuta a scaricare o importare Accesso Dati di tabelle o query in Excel con un solo clic.Perché?È possibile importare i dati delle tabelle di Access in Excel senza nemmeno aprire il DB di Access.Come importare i dati delle tabelle di Access in Excel
Passo 1: Aprite la cartella di lavoro di Excel e accedete al costruttore di codice VBA (Alt + F11) e aprite un nuovo modulo.Passo 2: Copiare e incollare il codice sottostante.
Sub importAccessdata()
Dim cnn Come connessione ADODB.Connection
Dim rs Come ADODB.Recordset
Dim sQRY Come Stringa
Dim strFilePath Come Stringa
strFilePath = "C:\DatabaseFolder\myDB.accdb" 'Sostituire 'DatabaseFolder' e 'myDB.accdb' con il percorso e il nome del proprio DB
Imposta cnn = Nuova connessione ADODB.Connection
Set rs = Nuovo recordset ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strFilePath & ";"
sQRY = "SELECT * FROM tblData" 'Sostituire 'tblData' con il nome della tabella o della query del DB Access da cui si desidera scaricare i dati
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Application.ScreenUpdating = False
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nulla
cnn.Close
Set cnn = Nulla
Esci dalla sub
Fine Sub
Passo 3: Fare clic sul pulsante Esegui o su F5 (inoltre è possibile inserire un pulsante/forma nel foglio excel, quindi fare clic con il pulsante destro del mouse e assegnare questa macro per l'esecuzione ogni volta).
I record del DB Access sono stati scaricati con successo in Excel, aprire la cartella di lavoro Excel e controllare i dati.
Nota: Assicuratevi che 'Microsoft ActiveX Data Objects Library' sia abilitato dalla finestra di dialogo Utensili – Riferimenti (utilizzare l'ultima versione [6.1 al momento di questo post]).
Pin
Sono certo che lavorate su molti dati di Excel, MS Access e VBA, quindi sono sicuro che Fortemente Vi consigliamo di partecipare al seguente Ultimate Excel VBA Userform con Access Database! Vale la pena di investire in te stesso! FALLO ORA!
Costruite il vostro programma nel mondo reale, imparate il vero VBA (macro) di Excel, superate i limiti di Excel con un progetto completo.
8 risposte
Signore voglio esportare i record del database di accesso in excel utilizzando il pulsante di comando in vb6.0 per favore inviami il codice completo vb6.0
Ho il foglio1 sul mio excel ma ottengo l'errore di esecuzione 424 sulla macro nel passaggio successivo, perché?
Sheet1.Range("A1").CopyFromRecordset rs
Salve, volevo verificare se se tengo il mio DB Access in un disco condiviso e distribuisco questa macro excel nella mia organizzazione, funzionerà? Voglio che la mia macro excel legga alcuni valori da questo DB Access e poi aggiorni alcune variabili all'apertura di excel.
Inoltre, se Access non funziona, posso utilizzare un altro excel conservato nell'unità dell'organizzazione e accedervi invece del DB. Ho provato con il metodo di apertura della cartella di lavoro nella mia macro per leggere il mio excel onedrive che è condiviso da tutti nella mia azienda, ma non ha funzionato.
Errore di compilazione nelle righe 5, 8, 9...
Alla fine ci sono riuscito.
Sto usando 2 variabili (textbox1 come valore 'currency, format R$0.000,00' e textbox2 come 'date', format mm/dd/yyyy)
Codice ↓
‘====================================================|
'========================================== Kauê Vaz===
‘====================================================|
Opzione esplicita
Fare clic su Strumenti, Riferimenti e selezionare
' Libreria Microsoft ActiveX Data Objects 2.0
Sub getDataFromAccess(strValue, strDate)
Dim DBFullName come stringa
Dim Connect come stringa, Source come stringa
Dim Connection come ADODB.Connection
Dim Recordset come ADODB.Recordset
Dim Col come intero
Dim mySQLVariable Come Stringa
Dim mySQLVariable_1 Come stringa
Dim strSQL Come stringa
mySQLVariable = strValue 'Valore della casella di testo1 (formato valuta R$0.000,00)
mySQLVariable_1 = strDate 'Valore dalla casella di testo2 (formato data mm/dd/yyyy)
Codice SQL
strSQL = "SELECT * FROM tblDatabase WHERE "
strSQL = strSQL & " [Valore] = '" & (mySQLVariable) & "' e "
strSQL = strSQL & " [Data] = '" & (mySQLVariable_1) & "' ".
Database, selezionare l'accesso al database
DBFullName = "C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb"
' Aprire la connessione
Set Connection = Nuova connessione ADODB.Connection
Connect = "Provider=Microsoft.ACE.OLEDB.12.0;"
Connect = Connect & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Connect
' Creare RecordSet
Set Recordset = Nuovo ADODB.Recordset
Con Recordset
' Ricerca di valori utilizzando la variabile strSQL del codice SQL
Fonte = strSQL
.Open Source:=Sorgente, ActiveConnection:=Connessione
' Importazione di colonne dal database.
Per Col = 0 A Recordset.Fields.Count - 1
Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
Prossimo
' Importazione di righe dal database.
Range("A5").Offset(1, 0).CopyFromRecordset Recordset
Fine con
Set Recordset = Nulla
Connessione.Chiudere
Imposta connessione =
ActiveSheet.Columns.AutoFit
Fine sott
Saluti
Posso importare solo alcuni dati? Filtrare per 2 variabili?
Esempio:
X = 13/03
Y = '122315124'
Portare dal database di accesso solo le righe che contengono queste variabili?
Ha funzionato per me. Grazie mille!
Questa è la migliore query che abbia mai visto. Potresti per favore aiutarmi ad aggiungere una clausola Where nella dichiarazione sql. Ho provato a modificare la tua query, ma mi da errore.