Dati, dati, dati: senza di essi un database sarebbe praticamente inutile. Non sorprende quindi che una delle domande più frequenti quando si tratta di importare dati nelle tabelle di Access sia: come posso semplificarmi la vita quando devo importare regolarmente molti (e moltissimi!) file? Trattandosi di un'operazione così comune, esistono ovviamente diversi modi per risolvere il problema, ma qui ne esamineremo uno in particolare, a mio parere il più semplice, soprattutto se lo fate regolarmente o addirittura con cadenza programmata. Un po' di pianificazione (e intendo proprio un po'!) e un pizzico di magia VBA e sarete pronti a partire: continuate a leggere per iniziare...
Importazione di tutti i file Excel in una cartella
Per questo articolo, esamineremo l'importazione di un numero di file Excel all'interno di una determinata cartella, ma potresti importare altrettanto facilmente file csv e così via: discuteremo a breve su come modificare il codice per gestire i file csv.
Innanzitutto, definiamo cosa vogliamo che il codice faccia:
"Vogliamo importare tutti i file da una data cartella in una tabella esistente - vogliamo anche specificare se i file hanno o meno una riga di intestazione"
Sembra abbastanza semplice, quindi diamo un'occhiata al codice per farlo:
Sub ImportfromPath(path As String, intoTable As String, hasHeader As Boolean) Dim fileName As String 'Loop through the folder & import each file fileName = Dir(path & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader 'check whether there are any more files to import fileName = Dir() Wend End Sub
Controllo dei problemi...

OK, prima le cose importanti. Per mantenere il codice il più possibile utilizzabile in circostanze diverse, chiediamo il nome del percorso (dove sono archiviati i file), il nome della tabella in cui vuoi importare questi file e se i file in questa cartella hanno tutti un intestazione o meno (ovvero i nomi dei campi vengono visualizzati nella prima riga del foglio di calcolo).
Noterai che la parte di codice che cerca i file – Dir(path & “\*.xls”) – aggiunge un carattere jolly e un'estensione di file al percorso fornito. Lo menziono perché sarebbe molto facile modificare il codice se, ad esempio, volessi importare solo file che corrispondono a una particolare convenzione di denominazione (ad esempio tutti i file che hanno "Gennaio" o "2017" come parte del nome del file ). Potresti, se lo desideri, persino aggiungere quel filtro come parametro alla chiamata alla subroutine.
Ad ogni modo, se un file corrisponde ai criteri dati (qualsiasi file ".xls" nella cartella utilizzando in questo caso), tenta immediatamente di importare quel file utilizzando il comando TransferSpreadsheet.
Dove modificare il codice in base alle proprie esigenze...
È a questo punto che puoi modificare il codice in modo che invece di importare un foglio di calcolo, importi file csv (usando il comando "TransferText") ecc.
Il codice quindi esegue un ciclo finché non ci sono altri file da importare in quella cartella.
È un piccolo pezzo di codice, ma che ti ritroverai a usare più e più volte, ne sono sicuro!
Introduzione dell'autore:
Mitchell Pond è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui riparare la corruzione SQL ed eccellere prodotti software di recupero. Per maggiori informazioni visita www.datanumen.com