Trasferire tabelle tra Access ed Excel

di Corrado Del Buono

4 Dicembre 2007 09:00

Organizzare e manipolare le informazioni dei nostri fogli di calcolo con la potenza della logica SQL contenuta in MS-Access

Il trasferimento in Access di database realizzati con Excel è una operazione non solo utile per evitare il reinserimento di dati già presenti in formato digitale su un foglio elettronico, ma anche in alcuni casi, necessaria: si pensi, ad esempio, alla possibilità di utilizzare in Access dati inseriti in applicativi gestionali che, spesso, consentono la sola esportazione su fogli di calcolo.

La procedura di importazione di un database realizzato con Excel si realizza attraverso la creazione di una nuova tabella che consente di risalire, attraverso passaggi guidati, alle caratteristiche del foglio elettronico e di trascrivere automaticamente il nome dei campi e il contenuto dei singoli record.

Per avviare la procedura si utilizza il comando Importa disponibile all’interno del menu File>Carica dati esterni (o nel menu contestuale della finestra principale di Access) e si individua, dalla finestra Importa che appare a video, la Cartella di lavoro dopo aver selezionato all’interno dell’elenco a discesa “Tipo di file” la voce Microsoft Excel.

La procedura automatica è composta da sei passaggi guidati: nella prima schermata della finestra Importazione guidata Fogli di calcolo si seleziona il foglio della cartella di Excel contenente il database; nella seconda occorre indicare se si intende utilizzare le intestazioni di colonne del database di Excel come nome di campi della nuova tabella che verrà creata in Access;

Nel terzo passaggio occorre indicare dove memorizzare i dati, ovvero all’interno di una nuova tabella o di una già esistente nel database di Access.

Nel quarto passaggio è possibile modificare alcune opzioni per i campi (nome, tipo di dati, indicizzazione, esclusione): la maggior parte di tali operazioni però, è consentita solo se viene importato un altro database di Access; pertanto, per modificare le caratteristiche dei campi è consigliato intervenire al termine della procedura guidata di importazione all’interno della visualizzazione struttura della nuova tabella che verrà creata.

Il quinto passaggio consente la gestione di una eventuale chiave primaria da associare al database: è possibile lasciare ad Access il compito di crearne una in automatico oppure, se si dispone di una colonna con “dati univoci”, utilizzare tale campo come chiave primaria.

Da notare che poiché le celle di Excel possono contenere solo numeri (comprese date e formule) o etichette, un eventuale utilizzo di una colonna come chiave primaria non consente la conversione automatica del formato numerico delle celle in formato “contatore” e, pertanto, se si intende far gestire ad Access l’inserimento progressivo della chiave primaria, sarà necessario modificare successivamente la caratteristica del campo attraverso la “Visualizzazione struttura” della tabella.

Il sesto passaggio della procedura guidata consente, infine, dopo l’assegnazione di un nome alla nuova tabella, di importare i dati al suo interno.

I diversi passaggi della procedura guidata possono essere anche minori e ciò dipende dalle opzioni di volta in volta selezionate: se si importano, ad esempio, ulteriori dati da un secondo foglio di calcolo in una tabella già creata con la procedura guidata, sarà sufficiente indicare (nel passaggio 3 di 6) la tabella destinata ad accogliere i dati, e, poiché Access possiede già tutte le informazioni necessarie, verrà visualizzata automaticamente l’ultima schermata della procedura guidata.

Modifica delle proprietà dei campi

Abbiamo osservato in precedenza come in un eventuale utilizzo di una chiave primaria personalizzata potrebbe tornare utile modificare il tipo di campo da numerico a “contatore”; in realtà, spesso sono richiesti, o semplicemente consigliati, ulteriori “aggiustamenti” anche per gli altri tipi di campo.

Soffermiamoci brevemente sui principali che consentono sia di ottimizzare che di formattare adeguatamente un database importato in Access.

Le celle di Excel che contengono testo vengono importate assegnando ai campi la massima capienza, ovvero 255 caratteri. In questi casi, per ridurre la dimensione del file di Access, potrebbe essere utile ridurre il numero di caratteri digitabili per tutti quei campi destinati ad accogliere stringhe di dimensioni modeste quali, ad esempio, il campo CognomeNome, il campo Provincia, ecc. o se preferite, la maggior parte dei campi (non è un caso che Access assegni in automatico la dimensione di 50 caratteri ai campi di testo!).

Diversamente, sebbene ciò si verifichi raramente per i database aziendali, potrebbe essere necessario aumentare la dimensione di alcuni campi; in questi casi sarà necessario modificare il tipo di campo da “Testo” a “Memo”, il formato che consente di digitare nel campo più di 255 caratteri (da notare che, in fase di importazione, la parte del testo contenuto in una cella di Excel che supera i 255 caratteri non viene importato).

Altri aggiustamenti potrebbero essere necessari per i campi derivanti da celle di Excel contenenti numeri o formule (in Access, difatti, vengono acquisiti solo i risultati numerici delle formule).

Il formato di importazione predefinito per un campo numerico (Dimensione campo: Precisione doppia; Posizioni decimali: Automatiche), seppur generalmente corretto, è privo di formattazione (un formato numerico Stile Valuta assegnato alle celle di Excel, ad esempio, non viene “conservato” in Access) e, pertanto, potrebbe essere necessario intervenire all’interno delle proprietà del campo numerico per assegnare nuovamente lo stile Valuta.

Non necessitano invece di modifiche, almeno che non si intenda assegnare una formattazione specifica diversa da quella standard (ad esempio, un formato data con l’indicazione del giorno della settimana), i campi “data”.

Esportare su di un foglio di calcolo un database realizzato con Access

Osserviamo ora le procedure che consentono di trasferire in Excel un database realizzato con Access. Questa operazione può risultare molto utile quando si intendono trattare i dati per aggiungere formule o creare grafici senza utilizzare gli strumenti di Access che, richiederebbero, per la loro complessità, tempi maggiori di progettazione. Sempre attraverso Excel è possibile gestire in maniera efficiente un database importato da Access attraverso Tabelle e Grafici Pivot (di questo argomento ci occuperemo in futuro).

Per esportare i dati su di un foglio di calcolo è sufficiente selezionare la tabella, utilizzare il comando Esporta disponibile nel menu File oppure all’interno del menu contestuale, selezionare dalla finestra Esporta Tabella ” …” in…” ” Microsoft Excel come tipo di file ed assegnare un nome ed una destinazione al file.

La esportazione dei dati avviene, analogamente all’importazione da Excel, attraverso i formati “standard” e, pertanto, si dovrà intervenire successivamente sul foglio di calcolo con gli opportuni strumenti di formattazione per apportare modifiche ai dati (ad esempio, sarà necessario utilizzare nuovamente il formato Valuta per la formattazione dei valori numerici).

Utilizzando la stessa procedura è possibile esportare anche una query esistente in Access o creata appositamente per il foglio di calcolo.

Una query può essere utilizzata sia estrarre da una tabella un limitato numero di campi, sia per far confluire in un unico prospetto campi appartenenti a tabelle differenti legati da relazioni.

Nel primo caso, potrebbe essere superfluo creare una query per esportare i dati in Excel in quanto è possibile eliminare con semplicità, direttamente dal foglio di calcolo, le colonne di dati “superflue” (si pensi ad un campo contatore di una tabella esportata in Excel che potrebbe non trovare alcuna utilità in un foglio di calcolo).

Nel secondo caso, invece, è quasi sempre necessario esportare i dati in Excel attraverso una query realizzata appositamente; infatti, le relazioni tra tabelle si creano, normalmente, tramite campi numerici legati a chiavi primarie e, pertanto, se si esportano le tabelle relazionate si rischia di avere in Excel colonne costituite da numeri piuttosto che da etichette. Facciamo un esempio per illustrare tale concetto.

Supponiamo di avere una tabella Dipendenti relazionata con una tabella Qualifica che contiene, oltre ad un campo contatore (ID) un campo (Qualifica) costituito dai seguenti record: Dirigente, Quadro, Impiegato, Operaio.

Per relazionare le due tabelle è necessario creare una relazione uno-a-molti, tra il campo contatore della tabella Qualifica ed un campo, dal formato numerico, nella tabelle Dipendenti (che chiameremo, ad esempio, IDQualifica).

Ora, se si esporta in Excel la tabella Dipendenti si avrà una colonna IDQualifica costituita da numeri (1 per Dirigente, 2 per Quadro, 3 per Dipendente e 4 per Operaio) e non da etichette.

Ecco quindi che diventa necessario creare una Query che selezioni il campo Qualifica dalla tabella Qualifica e gli altri campi dalla tabella Dipendenti e, solo successivamente, esportare quest’ultima sul foglio di calcolo.

In questo tutorial ci siamo occupati solo del “trasferimento” dei dati tra i due applicativi. MS Office dispone di altre procedure che consentono di “collegare” dinamicamente i dati tra Excel ed Access in maniera tale che eventuali modifiche apportate ai dati originari producono effetti anche sul file ad esso collegato.