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 (nona 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.


Visto il motore grammaticale di Word e l'oggetto Assistente di Office, oltre a qualche nozione fondamentale come ad esempio aprire/salvare i documenti, vediamo una cosa particolarmente utile per chi utilizza normalmente questo editor di testo: la creazione delle tabelle. Innanzitutto per creare una tabella dev'essere a disposizione un testo. Sarà allora necessario scrivere sul documento una frase, una parola o un semplice numero, selezionarla e intorno ad essa creare una bella tabella.
Abbiamo già visto come trattare gli oggetti Word e Document. Diamo quindi per scontato che si parta da un progetto tramite il quale si definiscano objWord ed objDoc. Naturalmente alla chiusura dell'applicazione tutto dovrebbe ritornare normale, ossia il documento dovrebbe chiudersi senza salvare nulla e la sessione Word dovrebbe chiudersi normalmente.
Un siffatto progetto potrebbe essere molto simile a quello che abbiamo utilizzato fino a questa nona lezione:

'dichiarazioni di utilità generale
Dim objDoc As Word.Document
Dim objWord As Word.Application
Option Explicit

Private Sub Form_Load()
'imposta il nuovo oggetto Word e crea un nuovo documento
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Add
End Sub
Private Sub Form_Unload(Cancel As Integer)
'chiude il documento senza salvarlo
objDoc.ActiveWindow.Close (False)
'chiude Word senza salvare nulla
objWord.Quit (False)
End Sub

A differenza dei progetti che abbiamo visto in precedenza, questa volta ci interessa vedere la tabella che si crea sul documento. Perciò possiamo impostare la proprietà Visible di objWord su True.
Accingiamoci adesso a scrivere un testo qualsiasi. Ad esempio scriviamo la frase "Visual Basic Italia" che è abbastanza lunga per poterci permettere di capire bene come funzionano le tabelle.

objDoc.ActiveWindow.Selection.TypeText "Visual Basic Italia"

Non torneremo sopra ai metodi di scrittura su un documento Word, visto che una spiegazione dettagliata è ampiamente disponibile nelle lezioni precedenti (vedere in particolare le prime lezioni di Visual Basic per Word).
A questo punto c'interessa selezionare la frase, in modo da creare intorno ad essa una tabella. Se viene saltato questo passo, la creazione della tabella non avviene, ed in compenso comparirà un messaggio del tipo:
Il metodo o la proprietà non è disponibile perchè l'oggetto è vuoto
Questo ci permette di anticipare che nella creazione di una tabella è buona norma creare un oggetto-tabella in modo oltretutto da individuare una tabella in particolare se ce ne dovessero essere tante all'interno di un documento. La sezione delle dichiarazioni sarà allora composta da queste quattro linee di codice:

Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objTabella As Word.Table
Option Explicit

Nell'evento Load di Form1 creiamo l'oggetto 'nuova sessione di Word', 'nuovo documento' che sarà sempre visibile. Infine scriviamo la frase nel modo indicato poco sopra:

Private Sub Form_Load()
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Add
objDoc.Activate
objWord.Visible = True
objDoc.ActiveWindow.Selection.TypeText "Visual Basic Italia"
End Sub

Mantenendoci sempre fermi sull'evento Load, costruiamo una semplice tabella intorno alla frase "Visual Basic Italia". Utilizzeremo a tal fine le seguenti linee di codice:

objDoc.ActiveWindow.Document.Select
Set objTabella = objDoc.ActiveWindow.Selection.ConvertToTable(, 1, 1, 90)

Cosa significa tutto questo? Prima di tutto abbiamo detto a Word di selezionare tutto il testo del documento. Siccome infatti il documento contiene solo la nostra frase, essa verrà automaticamente selezionata. Con la seconda linea convertiamo il testo selezionato in una tabella ad una riga ed una colonna (quindi una tabella 1x1) nella quale ogni cella ha lunghezza pari a 90.
Se infatti proviamo a sostituire 50 a 90, vediamo che la cella della tabella che contiene il testo, riducendosi di dimensioni, obbliga il testo a disporsi su più linee. Se volessimo una tabella a due colonne ed una riga, potremo scrivere:

objDoc.ActiveWindow.Document.Select
Set objTabella = objDoc.ActiveWindow.Selection.ConvertToTable(, 1, 2, 90)

ricordando però che il testo selezionato non verrà diviso tra queste due righe ma finirà tutto inesorabilmente in un'unica cella. Facciamo l'ultimo esempio: per ottenere una tabella a 5 righe e 11 colonne dovremo scrivere:

objDoc.ActiveWindow.Document.Select
Set objTabella = objDoc.ActiveWindow.Selection.ConvertToTable(, 5, 11, 90)

Ecco allora come si presenterebbe il codice completo:

Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objTabella As Word.Table
Option Explicit
Private Sub Form_Load()
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Add
objDoc.Activate
objWord.Visible = True
objDoc.ActiveWindow.Selection.TypeText "Visual Basic Italia"
objDoc.ActiveWindow.Document.Select
Set objTabella = objDoc.ActiveWindow.Selection.ConvertToTable(, 5, 11, 90)
End Sub
Private Sub Form_Unload(Cancel As Integer)
'chiude il documento senza salvarlo
objDoc.ActiveWindow.Close (False)
'chiude Word senza salvare nulla
objWord.Quit (False)
End Sub

Altro metodo per creare tabelle è quello di aggiungere una tabella completamente vuota al documento e poi riempirne a piacimento le celle. Anche in questo caso prima si dichiara objTabella come particolare tabella della collezione Word.Table (cioè della collezione delle tabelle di Word):

Set objTabella = objDoc.Tables.Add(objDoc.Range(), 1, 3)
objTabella.Cell(1,1).Range.Text = "Visual"
objTabella.Cell(1,2).Range.Text = "Basic"
objTabella.Cell(1,3).Range.Text = "Italia"
In questo semplice modo abbiamo costruito una tabella ad una riga e tre colonne ed in ogni singola cella abbiamo scritto un terzo della frase originaria. Utilizzando questo metodo la tabella avrà una lunghezza pari alla lunghezza del documento. Per questa ragione il primo sistema sarebbe più flessibile in quanto consente di determinare a priori la lunghezza della tabella, se non avessimo a disposizione il metodo AutoFit che come si può intuire adatta automaticamente la dimensione della tabella al suo contenuto.
Il codice allora potrebbe essere il seguente:

Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objTabella As Word.Table
Option Explicit
Private Sub Form_Load()
Set objWord = New Word.Application
objWord.Visible = True
Set objDoc = objWord.Documents.Add
objDoc.Activate
objWord.Visible = True
Set objTabella = objDoc.Tables.Add(objDoc.Range(), 1, 3)
objTabella.Cell(1,1).Range.Text = "Visual"
objTabella.Cell(1,2).Range.Text = "Basic"
objTabella.Cell(1,3).Range.Text = "Italia"
objTabella.Columns.AutoFit
End Sub
Private Sub Form_Unload(Cancel As Integer)
'chiude il documento senza salvarlo
objDoc.ActiveWindow.Close (False)
'chiude Word senza salvare nulla
objWord.Quit (False)
End Sub


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