Esporta dati Excel in Access con VBA (immagini e codice)
Che cos'è?
Questo codice VBA ti aiuta a caricare o esportare dati Excel in Access con un clic.
Perché?
Puoi esportare dati Excel in Access senza nemmeno aprire il DB di Access.
Come esportare dati Excel in Access
Passo 1: Aprire la finestra Eccellere foglio e sono arrivato al generatore di codice VBA (Alt + F11) e Apri un nuovo modulo
.
Passo 2: Copia e incolla il codice seguente al suo interno.
Const TARGET_DB = "mioDB.accdb" 'Sostituisci 'myDB.accdb' con il nome del tuo database, assicurati che sia Excel che Access DB siano sullo stesso percorso.
Sub PushTableToAccess()
Dim cnn Come ADODB.Connection
Oscura MyConn
Dim prima come ADODB.Recordset
Dim i tanto a lungo, j quanto a lungo
Dim Rw tanto a lungo
Fogli ("Nome del foglio"). Attiva 'Sostituisci il 'Nome del foglio' con il nome del tuo foglio Excel
Rw = Intervallo("A65536").Fine(xlSu).Riga
'Fornisci l'intervallo di dati del tuo foglio Excel
Imposta cnn = Nuova ADODB.Connection
MyConn = ThisWorkbook.Path e Application.PathSeparator e TARGET_DB
Con la Cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Apri MyConn
Fine con
'Sostituisci 'tblMyExcelUpload' con il nome della tua tabella in Access
Imposta primo = Nuovo ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:=”tblMyExcelUpload”, ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Opzioni:=adCmdTable
'Carica tutti i record da Excel ad Access.
Per i = 2 A Rw
primo.AddNew
Per j = da 1 a 7
rst(Celle(1, j).Valore) = Celle(i, j).Valore
Il prossimo j
primo.Aggiornamento
Successivamente io
'Chiude la connessione
prima.Chiudi
cnn.Chiudi
Imposta prima = Niente
Imposta cnn = Niente
Fine sott
Passo 3:Fai clic sul pulsante Esegui o F5. (Puoi anche inserire un pulsante/una forma nel foglio Excel, quindi fare clic con il pulsante destro del mouse e assegnare questa macro per l'esecuzione ogni volta.) Hai finito con il caricamento!! I record Excel sono stati caricati con successo su Access, apri la tabella DB di Access e controlla i dati.
Nota: Assicurati che 'Microsoft ActiveX Data Objects Library' sia abilitato dal file Utensili - Riferimenti (utilizzare l'ultima versione [6.1 al momento di questo post]).
Spillo
8 risposte
Ciao a tutti;
Le posizioni di questi due percorsi devono essere le stesse affinché ADODBConnection funzioni? Questo è ThisWorkbook.Path e Target_DB.
Comando dall'alto:
ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Oppure si può dire Workbook.Path
"C:\MyExcelFiles\MyWorkbook.xlsx" e il database di Access TARGET_DB si trovano in
"C:\MyDataBases\MyAccessDB.accdb"?
Il mio codice funziona quando sia Excel WorkBook che Access DB risiedono nella stessa cartella, ma quando si trovano in cartelle diverse (struttura della libreria organizzata correttamente, il codice fallisce nel punto .Open MyConn.
Ringrazia tutti,
Mario,
CIAO
Come imposto la password per questo?
Carri armati
rst(Celle(1, j).Valore) = Celle(i, j).Valore
il codice si interrompe qui
———-
Errore 3265
Impossibile trovare l'elemento nella raccolta corrispondente al nome o all'ordinale richiesto
———-
Come apparirebbe il codice se avessi il foglio di calcolo e il db in posizioni diverse, ovvero percorsi?
Ciao,
il mio codice viene eseguito fino a quando
Fogli ("Nome del foglio"). Attiva
Ho selezionato il foglio ma non succede altro.
Potresti consigliare?
Grazie
Prova Fogli di lavoro ("Il tuo foglio"). Attiva
Esiste un singolo comando per caricare i dati come (Range.CopyFromRecordset)?
Ciao Krishnan, non sono sicuro, lasciami esplorare e ti aggiornerò.