Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Lavorare con gli oggetti Excel (prima parte)

Premessa

Per poter creare un collegamento tra un'applicazione sviluppata in Visual Basic e Microsoft Excel, è anzitutto necessario consultare la libreria oggetti di Microsoft Excel disponibile nella finestra di dialogo Riferimenti di Visual Basic. Per poter poi aggiungere il riferimento bisogna scegliere Riferimenti dal menu Progetto e porre il segno di spunta vicino alla libreria oggetti di Microsoft Excel. Dopo aver compiuto questo primo passo, premendo il tasto F2 oppure scegliendo Visualizza / Visualizzatore oggetti si può dare un'occhiata preliminare agli oggetti che Excel ha a disposizione e che saranno proprio quelli che si andrà a manipolare.

La differenza fondamentale tra gli oggetti Excel e gli oggetti Word visti nel corso di Visual Basic per Word, sta nel fatto che non solo dovremo gestire una sessione di lavoro ed un documento (o meglio una cartella di lavoro), ma anche uno o più fogli per ogni documento.
Questo perchè, com'è ben noto, ogni cartella di lavoro di Excel è come un fascicolo contenente al suo interno tutti i fogli che lo compongono.
Il grafico in fondo all'articolo dovrebbe spiegare in modo più diretto quale relazione intercorre tra gli oggetti Excel: l'Applicazione Excel non è altro che la sessione di lavoro. Si apre una nuova sessione di lavoro avviando Excel. Ci possono dunque essere più sessioni di lavoro aperte contemporaneamente. Come si vedrà poi, dare il nome ad ogni sessione è necessario per riferirsi ad una sessione di lavoro in particolare.
E' importante rendersi conto che in realtà quando normalmente si apre Excel, non solo viene attivata una sessione di lavoro, ma viene creato anche una cartella di lavoro vuoto (che è il secondo oggetto Excel) ed vari fogli di calcolo (che rappresentano il terzo oggetto Excel). Di cartelle di lavoro e fogli di calcolo si parlerà in seguito.
Se volessimo considerare una sessione "pura", il vero oggetto Application di Excel, dovremo quindi aprire Excel e dal menu File selezionare la voce Chiudi.
Ecco come si presenta una sessione di Excel al netto degli oggetti Cartella di lavoro e Foglio:


Entriamo un po' più nello specifico: il discorso è astratto ma facilmente riconducibile ad un piano più concreto: si pensi al mondo dell'automobile. Per poter descrivere ad un amico l'auto che abbiamo appena acquistato sarà necessario avere in mente il concetto generale di automobile, ossia l'insieme di tutte le automobili (Oggetto). Una volta definito in generale cos'è un'automobile si può descriverne una in particolare: la marca, il modello, il colore, la cilindrata e così via (Istanza dell'oggetto).
Allo stesso modo si considera l'insieme di tutte le infinite applicazioni Excel (Excel.Application) e se ne sceglie una.
Denominiamo tale applicazione appExcel:

Dim appExcel As New Excel.Application

Siccome non è prevista l'intercettazione di sessioni di lavoro già esistenti, è stata introdotta nella linea di codice precedente la parola New che indica appunto che l'applicazione appExcel è di nuova creazione.
Adesso che è stato chiarito il concetto di Applicazione, si può passare a definire il termine cartella di lavoro. Un oggetto Cartella di lavoro è l'insieme di tanti fogli di calcolo. Come già visto poco fa, quando solitamente si apre Excel fuori da Visual Basic, viene generato automaticamente una cartella di lavoro vuoto composto da tre fogli anch'essi vuoti.
Aprire Excel da codice invece non prevede tale automatizzazione in quanto a chi sviluppa un'applicazione in Visual Basic è consentito l'accesso alla libreria completa degli oggetti di Excel e quindi la gestione separata di Applicazione, Cartella e Foglio. Per questa ragione sarà dunque necessario, dopo aver aperto una nuova sessione, generare un nuovo foglio oppure aprirne uno esistente sul disco fisso o su qualsiasi altro supporto.
Prima di tutto però dovremo prelevare dall'insieme di tutte le cartelle possibili (Oggetto) ossia Excel.Workbook la specifica cartella che c'interessa definire (Istanza dell'oggetto).
Chiameremo tale oggetto cartExcel:

Dim cartExcel As Excel.Workbook

Perchè non abbiamo inserito la parola New come nel caso di appExcel? Perchè non necessariamente una cartella dev'essere di nuova creazione: si può ad esempio aprire una cartella Excel archiviata nel disco fisso ma non è possibile fare altrettanto con una sessione di lavoro Excel. Questo per il semplice motivo che quando si salva il lavoro non viene salvata la sessione ma la cartella ed i fogli ad essa associati.
Si può adesso passare alla terza definizione, quella cioè di Foglio. Un foglio di lavoro (o foglio di calcolo) è costituito dall'insieme delle celle sulle quali si può lavorare. L'elenco dei fogli di lavoro è visualizzabile attraverso le schede dei fogli.
Ecco finalmente il grafico esplicativo:

Definiamo tra tutti i fogli di calcolo possibili (Oggetto) uno specifico foglio (Istanza dell'oggetto) denominato foglioExcel:

Dim foglioExcel As Excel.Worksheet

Ora che tutte le istanze sono state definite, si può procedere all'apertura della sessione e della cartella di lavoro. La creazione di una nuova cartella di lavoro, essendo nient'altro che una serie di fogli di calcolo, apre automaticamente i fogli stessi.
D'ora in poi non si farà più distinzione tra oggetto ed istanza dell'oggetto. Siccome la definizione di appExcel esprime già la volontà di aprire una nuova sessione di lavoro, non sarà necessario aprire una nuova applicazione Excel.
Sarà sufficiente visualizzarla inserendo nella routine Load di Form1 la seguente linea di codice:

Private Sub Form_Load()
appExcel.Visible = True
End Sub

Dando il via all'applicazione appena scritta si aprirà una sessione di lavoro vuota da ogni cartella proprio come mostrava la prima immagine dell'articolo.
Adesso andiamo incontro alla prima scelta: aprire una cartella di lavoro esistente oppure crearne una vuota?
Nel primo caso sarà necessario indicare il percorso del file .xls presente sul disco fisso e successivamente rendere la cartella visibile:

Set cartExcel = Excel.Workbooks.Open("C:\Documenti\cartella.xls")

nel secondo caso sarà sufficiente indicare quanto segue:

Set cartExcel = Excel.Workbooks.Add

Aprire un nuovo foglio di lavoro è un'operazione simile a quella appena vista:

Set foglioExcel = Excel.Worksheets.Add

Notare che un nuovo foglio (foglio4) si è aggiunto ai tre fogli aperti per default alla creazione dell'oggetto Cartella di lavoro.
Per aprire un foglio di calcolo esistente la procedura è notevolmente diversa. Innanzitutto si deve aprire o creare la cartella di lavoro nella quale selezionare il foglio ed in seguito scegliere il foglio tra quelli disponibili:

Set cartExcel = Excel.Workbooks.Add
Set foglioExcel = Excel.Worksheets.Item(2)

In questo caso abbiamo scelto di aprire il secondo foglio di calcolo di una nuova cartella. Per concludere quest'articolo aggiungiamo che è possibile rinominare il foglio selezionato attraverso la proprietà Name associata agli oggetti Excel.Worksheets.
Rinominiamo ad esempio il primo foglio di una nuova cartella di lavoro come "Primo foglio":

Set cartExcel = Excel.Workbooks.Add
Set foglioExcel = Excel.Worksheets.Item(2) foglioExcel.Name = "Primo foglio"



Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it