importare excel in access significa copiare i dati di un foglio o di un intervallo Excel dentro una tabella Microsoft Access, trasformandoli in record che possono essere interrogati, collegati ad altre tabelle, validati e gestiti dal database. L’importazione non mantiene una sincronizzazione automatica con il workbook: dopo il trasferimento, la tabella Access contiene una copia indipendente dei valori. Per questo è importante decidere prima se vuoi davvero importare oppure collegare il foglio.
La procedura descritta vale per Access desktop per Microsoft 365 e Access 2024 su Windows. Access Runtime può eseguire importazioni già automatizzate con macro o VBA, ma non è l’ambiente ideale per configurare manualmente wizard e strutture. Access non è disponibile come applicazione desktop nativa per macOS. Microsoft segnala inoltre che Access non supporta direttamente l’importazione di dati Excel con un’etichetta di riservatezza applicata: in quel caso la gestione della policy deve essere coordinata con l’organizzazione prima del trasferimento.
Indice
- Importare o collegare Excel
- Preparare il workbook
- Tipi dati e intestazioni
- Importazione in una nuova tabella
- Accodamento a una tabella esistente
- Uso di una tabella di staging
- Automazione con TransferSpreadsheet
- Date, numeri, zeri iniziali e valori misti
- ImportErrors e troubleshooting
- Microsoft 365, Access 2024 e Runtime
- FAQ
Importare o collegare Excel: la differenza fondamentale
Quando importi un foglio Excel, Access crea una copia dei dati. Se domani qualcuno modifica il file Excel, la tabella importata non cambia. Per aggiornare la copia devi ripetere l’importazione o progettare una procedura di aggiornamento. Questa modalità è ideale quando Access deve diventare il sistema che conserva, valida o storicizza i record.
Quando colleghi un foglio, invece, Access crea una tabella collegata che legge i valori nel workbook. Le modifiche fatte in Excel vengono riflesse nel collegamento, ma Microsoft specifica che il contenuto e la struttura della tabella Excel collegata sono di sola lettura in Access. Il collegamento è quindi adatto quando Excel resta la fonte ufficiale e Access deve soltanto interrogare o includere quei dati in query e report.
Preparare il file Excel
La qualità dell’importazione dipende moltissimo dalla struttura del workbook. Il foglio da importare dovrebbe essere una tabella rettangolare: una riga per record, una colonna per campo, una sola riga di intestazioni e nessuna cella unita nell’area dati. Titoli decorativi, righe vuote, subtotali inseriti tra i record e colonne con più significati rendono più difficile l’interpretazione.
Usa nomi colonna chiari e univoci. Evita intestazioni duplicate come «Data» ripetuta due volte. Se un campo rappresenta il codice cliente, chiamalo CodiceCliente; se rappresenta la data ordine, usa DataOrdine. I nomi coerenti semplificano anche l’accodamento a tabelle esistenti.
Controlla le formule. Access importa i valori risultanti, non trasforma automaticamente la logica delle formule Excel in espressioni o query Access. Se il workbook usa formule complesse, decidi se vuoi importare il risultato o ricreare il calcolo nel database.
Tipi dati: il punto più delicato
Excel è permissivo: nella stessa colonna puoi avere numeri, testo, celle vuote e valori come «N/D». Access richiede un tipo dati più coerente. Il wizard esamina i dati e propone un tipo, ma una colonna mista può produrre valori Null, errori o conversioni inattese.
I codici con zeri iniziali sono un esempio classico. «00125» sembra un numero, ma se è un codice non deve essere calcolato. In Excel impostalo come testo e in Access usa Testo breve. Se lo importi come Numero, gli zeri iniziali vengono persi.
Per le date assicurati che siano vere date Excel e non stringhe che sembrano date. Una colonna con «31/08/2026» memorizzato come testo e altre celle come data reale può generare risultati diversi. In flussi critici è spesso più sicuro importare in staging e convertire dopo.
Procedura passo passo per una nuova tabella
1. Apri il database di destinazione
Lavora su una copia di sicurezza se l’importazione potrebbe influenzare tabelle già usate. Se è un database multiutente, esegui modifiche strutturali in una finestra controllata.
2. Vai su Dati esterni
Nel gruppo Importa e collega scegli Nuova origine dati > Da file > Excel. Seleziona il workbook da importare.
3. Scegli l’importazione
Seleziona l’opzione che importa i dati in una nuova tabella nel database corrente. Non scegliere il collegamento se l’obiettivo è creare una copia locale modificabile.
4. Seleziona foglio o intervallo
Indica il foglio o l’intervallo denominato. Se nel workbook ci sono più tabelle, usa un intervallo ben definito per evitare righe decorative o dati non pertinenti.
5. Indica le intestazioni
Se la prima riga contiene i nomi campo, attiva l’opzione corrispondente. Controlla l’anteprima: le intestazioni devono diventare nomi campo, non il primo record.
6. Verifica i tipi
Per ogni campo controlla nome, tipo e indicizzazione. Un ID numerico può essere Intero lungo, una data Data/Ora, un importo Valuta o Numero con precisione appropriata, un codice Testo breve.
7. Definisci la chiave primaria
Puoi lasciare che Access aggiunga un’Autonumerazione oppure selezionare un campo univoco della fonte. Non scegliere come chiave un valore che può ripetersi.
8. Completa e verifica
Assegna un nome alla tabella e termina. Aprila e confronta il numero di record con Excel. Controlla primi, ultimi e alcuni record casuali.
Accodare Excel a una tabella esistente
Se esiste già una tabella Access con struttura definita, puoi accodare i dati. In questo caso i valori devono rispettare i tipi, la chiave primaria, gli indici univoci, i campi obbligatori e le regole di convalida. Un record duplicato può essere rifiutato; una stringa troppo lunga può essere troncata o generare errore.
Per flussi aziendali è spesso meglio non accodare direttamente dal file esterno. Importa prima in una tabella di staging, controlla i record e usa una query di accodamento verso la tabella definitiva. Questa strategia rende più semplice identificare duplicati e conversioni errate prima di toccare i dati operativi.
Perché usare una tabella di staging
Una tabella di staging è una zona temporanea. Può avere campi più permissivi, spesso testo, per acquisire il file senza perdere record. Dopo l’importazione esegui query di controllo e trasformazione. Solo i record validi vengono trasferiti nelle tabelle definitive.
Esempio: ricevi Clienti_Agosto.xlsx con CodiceCliente, RagioneSociale, Provincia, DataIscrizione e Fatturato. Importi in stgClientiAgosto. Cerchi CodiceCliente Null, duplicati, province non valide, date future e fatturati non numerici. Correggi o scarti le righe errate e poi accodi a tblClienti.
La staging è utile soprattutto quando i file arrivano da soggetti esterni o vengono prodotti da sistemi che possono cambiare schema. Evita che un problema nel file comprometta direttamente il modello relazionale.
Automazione con VBA e TransferSpreadsheet
DoCmd.TransferSpreadsheet consente di automatizzare importazioni ed esportazioni tra Access e fogli di calcolo supportati. Un esempio per un file XLSX:
Sub ImportaExcel()
On Error GoTo GestErr
Dim fileXls As String
fileXls = CurrentProject.Path & "\Input\Clienti_Agosto.xlsx"
If Dir(fileXls) = "" Then
MsgBox "File non trovato", vbExclamation
Exit Sub
End If
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
"stgClientiAgosto", fileXls, True
MsgBox "Importazione completata", vbInformation
Exit Sub
GestErr:
MsgBox Err.Number & " - " & Err.Description, vbExclamation
End Sub
Il parametro True indica che la prima riga contiene nomi campo. Prima di automatizzare, completa almeno un’importazione manuale riuscita e verifica il tipo di foglio. Il codice deve controllare l’esistenza del file, gestire errori e registrare l’esito.
Importare un intervallo specifico
TransferSpreadsheet può lavorare anche con intervalli, ma per procedure ripetitive un intervallo denominato stabile è spesso più leggibile. Se il foglio cresce, assicurati che l’intervallo includa tutte le nuove righe. Le tabelle strutturate di Excel possono facilitare la gestione lato workbook, ma verifica sempre come Access vede l’area.
Date e impostazioni locali
Le date sono sensibili alle impostazioni locali. Un file creato su un sistema con convenzioni diverse può contenere stringhe ambigue. Preferisci date reali Excel e, quando controlli stringhe, formati non ambigui come ISO yyyy-mm-dd. In Access usa Data/Ora e non Testo per valori che devono essere filtrati e ordinati cronologicamente.
Se importi date come testo in staging, valida con IsDate prima di CDate. Non convertire alla cieca: una stringa invalida può generare errore o, peggio, essere interpretata in modo diverso da quello atteso.
Numeri, decimali e valuta
Controlla separatore decimale e migliaia. Un file proveniente da un sistema con punto decimale può essere interpretato diversamente su un PC italiano. Per importi monetari usa il tipo Valuta quando appropriato, perché riduce problemi di arrotondamento binario tipici dei floating point.
Per identificatori grandi verifica il tipo. Access moderno supporta Numero grande in scenari compatibili, ma il database e le integrazioni devono essere progettati consapevolmente. Non convertire un ID SQL Server BIGINT in Intero lungo se può superare il limite.
Valori misti e colonne problematiche
Se una colonna contiene 100 numeri e una stringa «N/D», il wizard può prendere una decisione che non rappresenta tutti i valori. Normalizza il file prima dell’importazione oppure usa staging testo. La seconda opzione è spesso migliore quando non controlli la fonte.
Non considerare «N/D», «-» o «nessuno» equivalenti a Null senza una regola esplicita. In staging puoi usare query Update per trasformare i marker in Null solo nei campi dove ha senso.
ImportErrors
Quando Access non riesce a importare alcune righe, può creare una tabella degli errori con informazioni sul campo o sulla riga. Non cancellarla subito. Confronta il record con Excel e identifica la causa: tipo non compatibile, chiave duplicata, campo troppo lungo o valore obbligatorio mancante.
Conta quanti record sono stati importati e quanti rifiutati. Un messaggio «importazione completata» non è sufficiente se 500 righe su 10.000 sono finite in errore.
Evitare duplicati
Per importazioni periodiche usa una chiave stabile. Se il file contiene IDOrdine, imposta una chiave o indice univoco nella tabella definitiva. Se non esiste un ID, definisci una chiave business composta da campi che identificano realmente il record. Non affidarti al numero di riga Excel.
Con staging puoi creare una query che seleziona solo record non presenti, usando LEFT JOIN o NOT EXISTS, e poi accodarli. Questo è più robusto di un’importazione diretta senza controllo.
Salvare i passaggi di importazione
Access consente di salvare i dettagli di molte operazioni di import/export come specifiche. Una specifica memorizza file, destinazione e opzioni necessarie per ripetere l’operazione. È utile se ricevi ogni mese un file con lo stesso schema.
Una specifica non rende però sicuro un file con struttura cambiata. Prima dell’esecuzione periodica controlla che esistano le colonne attese e registra eventuali differenze.
Access Runtime
In Runtime l’utente non deve aprire il wizard e configurare i campi. Prepara un pulsante che controlla il file, esegue TransferSpreadsheet o una macro, mostra un riepilogo e registra gli errori. Prova il processo su un PC Runtime reale.
Se l’utente deve scegliere il file, puoi progettare una maschera con percorso configurabile o un file picker compatibile con 32/64 bit. Evita API non dichiarate correttamente.
Microsoft 365, Access 2024 e Windows
I flussi Dati esterni per Excel sono disponibili nelle versioni desktop correnti di Access, incluse Microsoft 365 e Access 2024. I nomi esatti delle schede possono cambiare leggermente tra aggiornamenti, ma il concetto Importa e collega resta stabile.
Access è un’applicazione Windows. Se il team usa Mac, non presentare Access come soluzione nativa macOS: valuta un ambiente Windows remoto/virtualizzato o una diversa architettura.
32 e 64 bit
TransferSpreadsheet è una funzione Access e non richiede codice diverso solo per 32/64 bit. Le differenze diventano importanti con componenti esterni, provider, API e librerie. Se il progetto usa automazione Excel via COM, testa la stessa architettura Office prevista sui PC utente.
Problemi comuni e troubleshooting
Alcune righe finiscono in ImportErrors
Controlla tipo dati, lunghezza, chiavi duplicate e campi obbligatori. Apri la tabella errori e confronta le righe con il workbook.
I codici perdono gli zeri iniziali
Tratta i codici come testo sia in Excel sia in Access. Se Excel li ha già trasformati in numeri, correggi la fonte o applica una regola di ricostruzione documentata.
Le date vengono interpretate male
Verifica che siano vere date e controlla le impostazioni locali. Per dati esterni usa staging e conversioni esplicite.
Access crea il tipo sbagliato
Crea prima la tabella Access con i tipi desiderati o importa in staging testo. Non lasciare che l’inferenza del wizard sia l’unica regola.
L’importazione duplica record
Usa chiavi univoche, staging e query anti-duplicato. Una nuova importazione non sa automaticamente quali record sono già presenti.
Il file non viene importato per policy di riservatezza
Microsoft indica che Access non supporta l’importazione di dati Excel con etichetta di riservatezza applicata. Segui la policy aziendale e coordina l’eventuale rimozione/reapplicazione con chi gestisce la sicurezza.
Il file è aperto da un altro utente
In molti casi l’importazione può leggere il file, ma blocchi o modifiche contemporanee possono creare risultati incoerenti. Per flussi periodici definisci una cartella di consegna e importa solo file considerati completi.
Controllo qualità
Dopo l’importazione confronta numero di record, somma di un campo numerico significativo, minimo/massimo data e un campione casuale. Controlla anche Null e valori lunghi. Se il file contiene 12.548 righe e Access ne importa 12.531, devi spiegare le 17 mancanti.
Registra data importazione, nome file e numero record. Per flussi mensili conserva una tabella LogImportazioni. Se un file viene processato due volte, il log aiuta a bloccare duplicazioni.
Sicurezza e manutenzione
Non importare file ricevuti da fonti non affidabili senza controlli. Il rischio principale non è solo il contenuto Excel, ma la qualità dei dati: codici falsi, valori fuori scala e intestazioni cambiate possono compromettere processi downstream.
Se il database è multiutente, separa front-end e back-end quando appropriato. Esegui l’importazione in un punto controllato e non da ogni copia del front-end contemporaneamente. Per processi centralizzati valuta un PC o servizio responsabile del caricamento.
Quando Excel non è più la fonte adatta
Se molti utenti devono aggiornare contemporaneamente i dati, se servono relazioni forti, audit, permessi granulari o grandi volumi, considera una fonte database come SQL Server. Excel resta ottimo per scambio e analisi, ma non è necessariamente il miglior back-end operativo.
Collegamenti utili su Guide-Pratiche.it
- Come trasferire dati da Excel ad Access senza errori
- Come esportare dati da Access a Excel
- Come evitare record duplicati in una tabella Access
- Tutte le Guide Access
Fonti Microsoft
- Microsoft Support: importare o collegare dati in una cartella Excel
- Microsoft Support: attività di base per database Access desktop
FAQ
Importare Excel aggiorna automaticamente i dati?
No. L’importazione crea una copia. Per vedere gli aggiornamenti del workbook valuta un collegamento.
Posso importare in una tabella esistente?
Sì, se scegli l’accodamento e i dati rispettano struttura, chiavi e regole della tabella.
Posso automatizzare l’importazione?
Sì con TransferSpreadsheet, macro o specifiche salvate. Prima valida manualmente il formato.
È meglio importare direttamente nella tabella definitiva?
Per fonti esterne o periodiche è più robusto usare staging, controllare e poi accodare.
Access importa le formule Excel?
Importa i valori risultanti, non ricrea automaticamente la logica delle formule come query Access.
Cosa succede ai duplicati?
Dipende dai vincoli. Con una chiave univoca vengono rifiutati; senza vincoli possono entrare, quindi servono controlli.
Funziona in Access Runtime?
Sì se l’automazione è già predisposta e testata. La progettazione e manutenzione vanno fatte con Access completo.
Checklist operativa
Controlla file, foglio, intestazioni, tipi, zeri iniziali, date, decimali, chiave, numero righe e destinazione. Decidi se importare in staging. Salva una copia della fonte. Esegui il wizard. Controlla ImportErrors. Confronta conteggi e totali. Solo dopo trasferisci i record definitivi.
Per procedure periodiche registra il nome file, hash o data, numero record, esito e utente. Impedisci che lo stesso file venga elaborato due volte. Documenta lo schema atteso e aggiorna la procedura se cambiano colonne o formati.
Conclusione
Importare Excel in Access è semplice solo quando il file è già pulito; nei flussi reali la qualità dipende dalla preparazione, dai tipi dati e dalla verifica. Usando una tabella di staging, chiavi univoche, controlli su date e numeri e un’automazione con gestione errori puoi trasformare un foglio Excel in dati Access affidabili senza duplicazioni o conversioni invisibili. Per esigenze di aggiornamento continuo valuta invece il collegamento, ricordando che Excel collegato è di sola lettura in Access.