La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Lavorare con gli oggetti Word (quarta parte)

Premessa

Come già visto nelle lezioni precedenti, i requisiti fondamentali per poter interagire con gli oggetti di Word sono due: avere installato una copia di Microsoft Word ed aver precedentemente caricato la libreria oggetti di Word 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 Word Object Library per poter utilizzare tutti gli oggetti di cui la libreria in questione si compone.


Continuiamo la nostra esplorazione dei metodi più interessanti legati agli oggetti Word. Cominciamo questa lezione con un metodo semplice ma di grande utilità: Characters, che ritorna il carattere alfanumerico relativo all'indice che è stato impostato dal codice. Ad esempio, se si vuole sapere qual'è il carattere che occupa la terza posizione all'interno di un testo selezionato e si vuole riscrivere questo carattere in una casella di testo:

Text1.Text = objDoc.ActiveWindow.Selection.Characters(**indicecarattere**)

dove appunto **indicecarattere** rappresenta ad esempio il primo, il secondo, il terzo ecc. carattere del testo selezionato.
Naturalmente il codice esposto sopra non ha alcuna validità ed utilità da solo. Riprendendo quindi alcuni concetti della lezione precedente, è possibile creare una semplice applicazione che scriva un breve testo all'interno di un nuovo documento e verifichi a quale carattere corrisponda ad esempio l'indice 8. Vediamo come fare:

Private Sub Form_Load()
Dim objDoc As Word.Document
Dim objWord As Word.Application
Set objword = New Word.Application
objword.Visible = True
Set objDoc = objword.Documents.Add
objDoc.Activate
objDoc.ActiveWindow.Selection.InsertAfter "Questo" _
& "è il mio testo."
Text1.Text = objDoc.ActiveWindow.Selection.Characters(8)
End Sub

Se si è fatto girare il programmino, si scoprirà che l'ottavo carattere della frase "Questo è il mio testo" è proprio "è". Si noti che anche gli spazi sono caratteri e dunque nel caso si fosse scelto invece dell'ottavo, il settimo carattere, la TextBox avrebbe mostrato il carattere " " ossia lo spazio. Cosa accade quando invece del nostro testo di complessivi 22 caratteri compresi spazi e punto finale si selezioni il 24° carattere? Visual Basic genererebbe un messaggio di errore del tipo:
Errore di run-time '5914'
il membro richiesto dell'insieme non esiste.

La facilità d'interazione tra Visual Basic e Word assomiglia molto alla semplicità di gestione del testo attraverso una TextBox o ancor meglio una RichTextBox. Una volta che si individua il carattere prescelto infatti, è possibile modificarlo a piacimento eliminandolo o sostituendolo con un altro carattere:

objDoc.ActiveWindow.Selection.Characters(8) = "c"

dice a Visual Basic di prendere l'ottavo carattere e sostituirlo con un nuovo carattere, nella fattispecie con "c". Forse sostituire un testo lettera per lettera è uno spreco di tempo, a meno che non sia mirato ad un risultato limitato a singoli caratteri. Ecco che allora ci viene incontro la proprietà Text. Come per Characters, Text può essere utilizzato per modificare il testo selezionato. Presupposta la presenza di una TextBox nella nostra form, si può allora agire in questo modo:

objDoc.ActiveWindow.Selection.Text = "Questo è il mio" _ & " nuovo testo"

Ecco che allora la frase "Questo è il mio testo" che avevamo in precedenza viene sostituita dalla nuova frase ossia "Questo è il mio nuovo testo". La possibilità di individuare parte del testo in un documento ci permette ad esempio di selezionare proprio una sezione particolare di esso. Per fare questo anticipiamo quello che andremo a vedere nel corso delle lezioni successive, ossia come lavorare non sul testo del documento ma sul formato del documento stesso. L'anticipazione consiste in questo: per selezionare ad esempio il quarto carattere della frase "Questo è il mio testo" possiamo fare così:

'scrive la frase
objDoc.ActiveWindow.Selection.TypeText "Questo è il mio testo"
'seleziona il terzo carattere della frase
objDoc.ActiveWindow.Document.Characters(3).Select

Quando si farà girare il programma, di cui ricordiamo il codice soprastante è solo una parte in quanto sono necessarie tutte le procedure di dichiarazione ed inizializzazione degli oggetti visti nelle lezioni precedenti e ripetute all'inizio di questa, verrà evidenziato solamente il carattere "e" e Word sarà pronto ad agire su di esso come vorrete, come visto in precedenza: cambiandone lo stile, le dimensioni e così via. Inoltre la proprietà Characters congiuntamente a InsertAfter permette di inserire il testo voluto all'interno di una frase, facendo spazio al punto desiderato. Si immagini infatti di avere la nostra solita frase "Questo è il mio testo". Se si vuole inserire "non" tra la parola "Questo" e la parola "è", basterà agire in questo modo:

'inserisce la solita frase nel documento
objDoc.ActiveWindow.Selection.TypeText "Questo è il mio testo"
'seleziona il settimo carattere della frase
objDoc.ActiveWindow.Document.Characters(7).Select
'dice a Word di inserire dopo la selezione, quindi dopo il 'settimo carattere, ossia in corrispondenza dell'ottavo, il 'testo "non "
objDoc.ActiveWindow.Selection.InsertAfter "non "

E' da notare il fatto che è stato lasciato uno spazio alla fine del testo "non " per evitare che il testo appena inserito si inserisca in quello originario senza uno spazio di separazione tra i due. Utilizzare a questo scopo InsertBefore al posto di InsertAfter comporta la necessità di ridefinire il conteggio dei caratteri. Incollando infatti il nuovo testo in corrispondenza del carattere 7, si avrà un risultato di questo tipo:
"Questonon è il mio testo"
senza spazio tra "Questo" e "non" e con due spazi tra "non" ed "è". Sarà allora sufficiente reimpostare il tutto modificando il parametro Characters in questo modo:

objDoc.ActiveWindow.Selection.Characters(8).Select

Della selezione è possibile modificare a piacimento lo stile, scegliendo tra Bold, Italic ed Underline Facciamo un solo esempio che vale per tutti e tre. Se si vuole un carattere specifico di un testo, ad esempio il secondo, in grassetto:

objDoc.ActiveWindow.Document.Characters(2).Bold = True

Vediamo un'altra proprietà interessante: CreateTextBox. Essa prende il testo selezionato e lo inserisce in una TextBox di Word, liberamente collocabile sullo schermo dall'utente. Ecco come:

objDoc.ActiveWindow.Selection.CreateTextbox

E'intuibile anche la funzione della prossima proprietà, cioè Delete che cancella completamente il testo selezionato dal documento Word:

objDoc.ActiveWindow.Selection.Delete

La prossima lezione sarà particolarmente interessante: vedremo come fare un controllo grammaticale sul testo e come copiare, tagliare ed incollare singole parole, paragrafi e caratteri.
Alla prossima, allora!
Archivio:
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