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

Come già visto nelle lezioni precedenti, i requisiti fondamentali per poter interagire con gli oggetti di Excel sono due: avere installato una copia di Microsoft Excel ed aver precedentemente caricato la libreria oggetti di Excel disponibile nella finestra di dialogo Riferimenti. Per una maggiore comprensione, la finestra si apre cliccando sulla voce Progetto del menu principale e selezionando dal menu Progetto che si aprirà, la voce Riferimenti che è quella accompagnata dall'icona dei libri. Basterà poi selezionare la voce Microsoft Excel Object Library per poter utilizzare tutti gli oggetti di cui la libreria in questione si compone.

Le linee di codice analizzate nell'articolo precedente possono risultare piuttosto scomode nel momento in cui si va ad avviare l'applicazione per testarla, visto che alla chiusura del programma, la sessione di Excel (e naturalmente la cartella di lavoro ed il foglio di calcolo) rimarranno aperti, obbligando ogni volta ad una chiusura manuale.
E' possibile quindi associare all'evento di chiusura dell'applicazione Visual Basic la chiusura della sessione Excel e della cartella di lavoro.
Come si vedrà nel corso dell'articolo sorgerà però un problema: la chiusura di una cartella di lavoro è sempre accompagnata dalla richiesta di salvataggio della stessa.
Così, anche se la sessione di lavoro Excel è invisibile, cioè se è stato impostato:

appExcel.Visible = False

comparirà una finestra di messaggio al di fuori dell'applicazione che abbiamo eseguito che chiede se si desidera salvare il documento prima di chiuderlo.
Evitare quest'intrusione è molto semplice: basta indicare da codice se si vuole salvare la cartella di lavoro alla chiusura oppure no. Nel primo caso dev'essere naturalmente indicato un percorso valido su disco fisso o qualsiasi altro supporto.
Cominciamo però aggiungendo che è possibile gestire la visibilità anche dei singoli fogli di lavoro. Per permettere la visualizzazione di un singolo foglio di lavoro (ad esempio Foglio2, ossia il secondo foglio di lavoro dei tre creati per default alla creazione di una nuova cartella di lavoro) è sufficiente inserire le seguenti linee di codice:

Set foglioExcel = Excel.Worksheets.Item(2)
foglioExcel.Visible = xlSheetVisible

Con la prima linea si indica a quale foglio di lavoro dei disponibili applicare lo stato di visualizzazione, definito invece dalla seconda riga.
Per impedire la vista ad esempio del primo foglio di lavoro:

Set foglioExcel = Excel.Worksheets.Item(1)
foglioExcel.Visible = xlSheetHidden

Importante è anche il metodo Activate che indica se un oggetto è attivo oppure no. E' importante dal momento che si può indicare come è stato fatto sopra in quale foglio di calcolo lavorare ma questo non comporta visualizzazione automatica di tale foglio.
Ad esempio se decidessimo di rendere visibile l'applicazione Excel e di lavorare su Foglio 2, sarebbe opportuno passare alla visualizzazione di Foglio2. Ecco come fare:

Set foglioExcel = Excel.Worksheets.Item(2)
foglioExcel.Activate

Adesso si può passare finalmente alla chiusura del documento. Quello che dovremo fare è chiudere la cartella di lavoro nella quale sono contenuti tutti i fogli di calcolo.
Per eseguire tale operazione sarà sufficiente un semplice:

Private Sub Form_Unload(Cancel As Integer)
cartExcel.Close False
End Sub

Notare che non appare nella seconda linea di codice il segno di uguale (=) prima di False perchè False è in questo caso un parametro che si assegna all'operazione di chiusura.
Avendo indicato False come parametro, abbiamo indicato che alla chiusura della cartella di lavoro non si desidera che appaia la richiesta di salvataggio della stessa.
Il salvataggio di una cartella di lavoro infatti è un'operazione a parte:

cartExcel.Save

salva la cartella corrente in base al nome assegnatole. Se quindi abbiamo aperto una cartella di lavoro esistente, questa sarà aggiornata con i nuovi dati dell'ultima sessione di lavoro. In caso contrario, essendo il nome di default Cartel1,Cartel2...Carteln, la cartella di lavoro sarà salvata con tale nome.
Diverso è il caso della seguente linea di codice:

cartExcel.SaveAs "C:\Documenti\Cartella.xls"

nella quale viene espressamente indicato il nome del percorso da seguire per il salvataggio della cartella di lavoro.
Una volta chiusa la cartella di lavoro rimarrà però aperta la sessione Excel, proprio come mostrato dalla prima figura dell'articolo precedente.
Sarà necessario allora aggiungere:

appExcel.Quit


Adesso passiamo alla gestione delle celle. E' possibile considerare una cella alla volta indicandone le coordinate ossia il numero di riga ed il numero di colonna. Ad esempio la prima cella in alto a sinistra sarà indicata come:

foglioExcel.Cells(1, 1)

Da sola questa linea di codice non ha nessun significato. Serve però a definire la posizione della cella desiderata.
Ancora più importante è capire la proprietà Range. Essa infatti definisce un'area di validità ossia in poche parole il numero di celle che compongono l'area che desideriamo attivare o comunque considerare.
Se decidiamo infatti di cancellare il contenuto delle prime due caselle in alto a sinistra quindi rispettivamente le celle di coordinate (1,1) e (1,2), dovremo considerare un Range ossia un'area di validità che ha inizio dalla prima casella e termina nella seconda.
Probabilmente la seguente figura chiarirà meglio il significato della proprietà: consideriamo l'esempio fatto poc'anzi di un Range di celle (1,1) e (1,2):



Come si sarà compreso, il Range è rappresentabile graficamente da un rettangolo. E proprio come un rettangolo è possibile definirne le dimensioni solamente tramite una delle due coppie punti opposti dalla diagonale scelta.
Ad esempio, per definire il rettangolo del Range potremo scegliere i punti 1 e 4 oppure i punti 2 e 3 come mostra la figura sotto:
Proviamo prima di chiudere questo articolo a selezionare sul foglio di lavoro il Range composto dalle celle (2,1) e (5,3):

foglioExcel.Range(foglioExcel.Cells(2, 1), foglioExcel.Cells(5, 3)).Select

eccone il risultato:



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