Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Lavorare con gli oggetti Excel (terza 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.

Una volta definita l'area di validità o Range del foglio di calcolo, si può pensare ad interagire con essa ad esempio selezionando tutte le colonne del foglio stesso che ospitano almeno una delle celle del Range.
Per completare tale operazione sarà sufficiente sostituire al metodo Select di Range il metodo Select collegato alla proprietà EntireColumn, come mostrato dal codice qui sotto:

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

dove è stato scelto di selezionare tutte le celle delle colonne che contengono parte del Range di dimensioni (2,1) - (5,3).
Il risultato, da un punto di vista puramente grafico è il seguente:



Adesso sarà necessario chiarire due punti importanti. Il primo, relativo all'immagine sopra è molto banale: per un motivo di spazio l'area selezionata va ben oltre l'undicesima riga, in quanto l'immagine è stata tagliata per evidenti motivi di spazio. Teoricamente il metodo EntireColumn.Select ed il corrispondente metodo da applicare alle righe (che vedremo subito dopo), permettono di selezionare tutte le celle delle colonne, fino alla fine del foglio di lavoro.
Altro discorso è quello dell'area di validità. Essa infatti è rappresentata da Excel dal rettangolo con bordo in grassetto ed area blu, come s'è già visto in una figura dell'articolo precedente.
Selezionando il set di colonne del Range (2,1) - (5,3) si è deciso di ampliare l'area di validità passando dal Range (2,1) - (5,3) al Range (1,1) - (+oo, 3). Ancora meglio: parlando in termini molto più consoni al linguaggio di sviluppo che utilizziamo, la nuova area di validità è rappresentata dall'area (1,1) - (foglioExcel.Columns.Count, 3) dove:

foglioExcel.Columns.Count

rappresenta il conto totale delle colonne presenti nel foglio di calcolo. Esattamente allo stesso modo è possibile tenere il conto delle righe esistenti:

foglioExcel.Rows.Count

Così come sono state selezionate tutte le colonne, è altresì possibile attivare tutte le righe che contengono almeno una delle celle che compongono l'area di Range assegnata:

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

Anche qui il risultato dell'operazione è facilmente intuibile:



Si noti che anche in questo specifico caso valgono le indicazioni relative all'esempio mostrato prima ossia: l'area di validità o di selezione va ben oltre le cinque colonne indicate dalla figura in quanto il Range sarà rappresentato da un rettangolo di dimensioni (2,1) (5,+oo)
Vediamo adesso come inserire i dati in ognuna delle celle del foglio di lavoro: dovrà essere utilizzata la proprietà Text di Characters.
Questo significa che sarà necessario indicare la cella come combinazione di riga e colonna e quindi scrivere:

foglioExcel.Cells(1, 1).Characters().Text = "Prima cella"

Il codice qui sopra aggiunge il testo "Prima cella" alla cella di coordinate (1, 1). E' necessario ricordare che il primo di ogni coppia di valori che determinano le celle indica la riga ed il secondo la colonna.
Come già è stato visto nell'articolo precedente, è opportuno per semplificare e velocizzare l'apprendimento degli esempi proposti, avere sempre sott'occhio il foglio di lavoro sul quale si sta lavorando.
Così, per nostra convenienza, possiamo decidere di lavorare sul primo foglio di calcolo e conseguentemente attivarlo. Sarà quindi più semplice notare che "Prima cella" è ora il testo della cella (1,1):

Set foglioExcel = Excel.Worksheets.Item(1)
foglioExcel.Activate
foglioExcel.Cells(1, 1).Characters().Text = "Prima cella"

Stesso risultato di prima si ottiene indicando i valori di riga e colonna delle celle non in modo espresso ma attraverso variabili.
In questo modo sarà sicuramente più facile gestire il codice modificando tali variabili, senza dover andare ad operare su istruzioni lunghe ed articolate. Se vogliamo ad esempio riprodurre il risultato ottenuto in precedenza, ossia la selezione di un Range di celle (2,1) - (5,3):

Dim Colonna1, Colonna2, Riga1, Riga2 As Integer
'si può facilmente operare su questa linea di codice
'modificando i valori di ciascuna variabile
Riga1 = 2: Colonna1 = 1: Riga2 = 5: Colonna2 = 3
foglioExcel.Range(foglioExcel.Cells(Riga1, Colonna1), foglioExcel.Cells(Riga2, Colonna2)).Select


In questo modo sarà oltretutto più semplice andare a popolare l'area di selezione, ossia ad inserire valori (numerici, testuali) in ciascuna delle celle che compongono il Range.
Proviamo con un metodo progressivo ossia mediante l'utilizzo di un ciclo For...Next. Il ragionamento è il seguente: per il valore di un contatore che chiamiamo i che va dalla riga della prima cella in alto a sinistra del Range alla riga della cella in basso a sinistra del Range facciamo variare un secondo contatore, n, che dalla prima colonna all'ultima del Range popola tutte le celle della riga:

For i = Riga1 To Riga2
For n = Colonna1 To Colonna2
foglioExcel.Cells(i, n).Characters().Text = "Cella " & i & " " & n
Next n
Next i

Come risultato avremo il popolamento dell'intero Range: tutte le celle dell'area selezionata saranno riempite con le coordinate della cella stessa:



Nota: essendo il codice mostrato sopra del tutto indipendente dal Range, non è detto che non si possa popolare una serie di celle differente dal Range stesso.
Ad esempio nulla vieta di popolare tutte le celle della prima colonna, selezionando invece tutte le celle della prima riga.
Questo è davvero un punto importante per le lezioni che verranno, nelle quali si discuterà come selezionare un'area non vuota (nella quale le celle non abbiano valore "") e come copiare, incollare, tagliare, raggruppare, calcolare i valori delle celle che si sono selezionate.


Esercizio:

Proponiamo in questa lezione un semplice esercizio per cominciare a prendere confidenza con i concetti appresi nell'articolo corrente e in tutti i precedenti. La soluzione dell'esercizio sarà pubblicata nel corso del prossimo articolo.

Sviluppare una semplice applicazione che:

1) visualizzi applicazione Excel, cartella di lavoro e che operi e visualizzi il secondo foglio di lavoro;

2) chieda all'utente le coordinate del Range di selezione (nota: come visto nella lezione precedente il Range si determina con due sole celle opposte da una delle due diagonali del rettangolo di selezione) e selezioni tale Range; Nota importante: se si utilizzano le caselle di testo per permettere all'utente di inserire le coordinate delle celle, si ricordi che il loro contenuto è in forma testuale perciò non compatibile con i valori numerici delle coordinate. Per rendere il contenuto di una TextBox compatibile, indicare ad esempio:

Riga1 = Val(TextBox1.Text)


3) popoli tutto il Range selezionato con il testo "Cella coordinata riga, coordinata colonna come visto nel corso dell'articolo

Ecco un esempio di come può essere impostata l'applicazione:





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