Molte sono le persone che mi hanno chiesto un aiuto su come esportare dei dati da Access in Excel.
Forse è meglio scrivere, una volta per tutte, un breve tutorial in merito.
Prima di iniziare assicuriamoci di aver incluso, tra i riferimenti di access, le librerie ad oggetti di Excel:
- Entrare nell'ambiente di sviluppo Visual Basic di Access, selezionare il menu Strumenti e la voce di menù Riferimenti. Cercare, quindi, nell'elenco della maschera Riferimenti la voce "Microsoft Excel xx.yy Object Library", dove xx.yy indica la versione (per esempio in Office 2000 è 9.0), e contassegnarla.
Supponiamo di avere una semplice maschera con due campi textbox, un campo ComboBox, contenente le lettere delle colonne (A, B, C, D, E) ed un tasto. I due campi textbox ed il campo ComboBox sono, nell'ordine:
Il tasto, chiamato R_Excel, ci serve per lanciare la procedura che scriverà il valore immesso nella cella specificata.
La procedura è la seguente:
Private Sub R_Excel_Click() ' si dichiarano le variabili che conterranno gli oggetti Excel Dim MyEx_Appl As Excel.Application 'Oggetto Applicazione Excel Dim MyEx_WrkB As Excel.Workbook 'Oggetto Workbook Dim MyEx_Wsht As Excel.Worksheet 'Oggetto Worksheet
' dichiariamo le variabili che accolgono ' il valore, la riga e la colonna Dim Valore As String Dim Riga As String Dim Colonna As String Dim NumColonna As Integer
'Preleviamo i valori dalla maschera ' Valore If Len(Me.R_Valore.Value) = 0 Then Valore = "Nessun Valore" Else Valore = Me.R_Valore.Value End If ' Riga If Len(Me.R_Riga.Value) = 0 Then Riga = "0" Else Riga = Me.R_Riga.Value End If ' Colonna If Len(Me.R_Colonna.Value) = 0 Then Colonna = "0" Else Colonna = Me.R_Colonna.Value End If ' - Creiamo una nuova applicazione excel; Set MyEx_Appl = New Excel.Application ' - Aggiungiamo un nuovo workbook (generico) Set MyEx_WrkB = MyEx_Appl.Workbooks.Add ' - Prendiamo il primo foglio elettronico del workbook e lavoriamoci Set MyEx_Wsht = MyEx_WrkB.Worksheets(1) ' Picolo esperimento: Scriviamo l'etichetta "valore:" a sinistra del valore NumColonna = Me.R_Colonna.ListIndex + 1 'prendo il numero d'ordine della colonna "A, B, C, D, E, F" 'Scrivo l'etichetta solo se c'è spazio: If NumColonna > 1 Then MyEx_Wsht.Cells(Riga, NumColonna - 1).Value = "valore:" End If ' Scrivo il valore MyEx_Wsht.Cells(Riga, NumColonna).Value = Valore ' visualizziamo il foglio elettronico. MyEx_Appl.Visible = True End Sub
Esaminiamo nel dettaglio la parte della procedura che si occupa di scrivere in un foglio Excel. In pratica replichiamo con il codice VBA le operazioni che facciamo ordinariamente col mouse quando lanciamo Excel dal menù avvio di Windows o dalla barra delle applicazioni di Office: apriamo l'applicazione Excel, carichiamo un nuovo insieme di fogli elettronici vuoti, generalmente tre, selezioniamo una cella di uno dei fogli elettronici e scriviamo un valore. In pratica l'apertura dell'applicazione Excel ed il caricamento dei tre fogli elettronici vuoti sono operazioni che avvengono contestualmente e, quindi, non ce ne accorgiamo ma in VBA sono operazioni distinte!
La prima operazione è quella di apertura dell'applicazione Excel. Le righe di codice sono le seguenti:
Dim MyEx_Appl As Excel.Application 'Oggetto Applicazione Excel ..... .... ' - Creiamo una nuova applicazione excel; Set MyEx_Appl = New Excel.Application
La seconda operazione è quella di aggiungere all'applicazione Excel un gruppo di fogli elettronici (per default tre) vuoti. Tale gruppo è rappresentato nel modello ad oggetti di Excel con l'oggetto workook. Per comprendere meglio questo concetto si consideri che ogni file .xls contiene un workbook Excel. Ogni applicazione Excel può supportare diversi workbook. Per verificarlo aprite Excel cliccando su un vostro file .xls e, successivamente, senza chiudere l'applicazione, aprite con il menu "File-Apri" un altro file .xls. A questo punto dovreste verificare Attraverso il menù "Finestra" la presenza dei due file. Avete, quindi, due workbook attivi sull'applicazione Excel.
Quanto sopra si traduce semplicemente nel fatto che ogni oggetto Excel.Application possiede una collezione di oggetti workbook chiamata "workbooks". Per Aggiungere un workbook vuoto all'applicazione basta invocare il comando Add (cioè aggiungi): Excel.Application.Workbooks.Add(). Se il workbook è conforme ad un modello Excel (i famosi file .xlt) o è un file Excel già salvato, basta indicare il percorso del file come argomento del metodo Add(): Excel.Application.Workbooks.Add(PercorsoFile).
Dim MyEx_WrkB As Excel.Workbook 'Oggetto Workbook ..... ' - Aggiungiamo un nuovo workbook (generico) Set MyEx_WrkB = MyEx_Appl.Workbooks.Add
A questo punto basta indicare ad Excel quale foglio elettronico usare, ad esempio il primo. Ogni foglio elettronico di un workbook viene rappresentato con un oggetto worksheet (letteralmente foglio di lavoro). Dunque, sappiamo che ogni workbook è composto da fogli elettronici (tre di default) e questo si traduce nel fatto che un oggetto workbook ha una collezione di oggetto worksheet chiamata worksheets. Le sottostanti righe illustrano come indicare il primo foglio elettronico.
Dim MyEx_Wsht As Excel.Worksheet 'Oggetto Worksheet .... ' - Prendiamo il primo foglio elettronico del workbook e lavoriamoci Set MyEx_Wsht = MyEx_WrkB.Worksheets(1)
Bene. A questo punto la variabile MyEx_Wsht contiene un foglio elettronico. Vogliamo scrivere un Valore in una cella le cui coordinate sono nelle variabili riga e NumColonna? Semplice, basta "dirlo" con la seguente istruzione VBA:
' Scrivo il valore MyEx_Wsht.Cells(Riga, NumColonna).Value = Valore
A questo punto dovrebbe essere chiaro il ruolo della collezione Cells e cosa significa la precedente riga di codice.
Fino a questo momento abbiamo lavorato "dietro le quinte". Adesso è venuto il momento di mostrare a video il risultato.
' visualizziamo il foglio elettronico. MyEx_Appl.Visible = True
Facile, vero?
Bene, divertitevi con questo esempio: EsempioExcel_I.zip (33Kb)
Se vi siete divertiti e volete acquisire maggiore praticità, vi consiglio di scaricare anche questo secondo esempio in cui dei dati vengono scritti in un foglio elettronico Excel pre-esistente in posizioni predefinite. In pratica la procedura scrive la somma di un contocorrente nella cella adiacente a quella dove trova l'identificativo del contocorrente. La procedura, quindi, per ogni contocorrente, cerca l'identificativo nel foglio Excel e, una volta trovato, scrive il relativo importo nella cella a destra: EsempioExcel_II.zip (28Kb).
Per approfondire e proseguire:
03/10/2007
Michele de Nittis
[da 1 a 0 di 0 commenti] | Indietro