Il blog di Gianni Giaccaglini

Blog su VBA e VSTO
Gianni Giaccaglini

My Links

News

NB - V. anche gli ARTICOLI (in fondo a questa barra)
Solo quesiti validi a: giannigiac@tin.it
Il mio Best seller su VBA
(v. www.hoepli.it)


Il mio ultimo libro su Open XML
(v. www.FAG.it):



La mia nipotina ELISA

Foto con dedica a ME di
Bill Gates giovanissimo
nei mitici anni 80!

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

Tabelle Word - Chiarimenti per gente del Forum

Non ho troppo tempo né pazienza per i Forum…

Mea culpa, mea culpa. Tuttavia, avendo notato che in testa al Forum di Shareoffice ci sono diversi appelli angoscianti relativi a tabelle di Word, mi permetto di intervenire con un post. Così le osservazioni che sto per fare potranno servire a più gente. Almeno spero…

Prima risposta (a un quesito posto in cima al Forum…).

  1. La causa dell’apparente anomalia lamentata sta in un banale  errore di s1ntassi:

ERRATA                                            CORRIGE

Obj.Tabella.Add()       Obj.Tabella.Add  ‘Il metodo Add NON vuole () !

Con l’occasione mi permetto, bonariamente, due appunti.

1) Perché adottare (anche in VBA, linguaggio di UTENTI…) la pignola sintassi Obj.Tabella o txt.Miotesto e simili? Anche Microsoft da tempo non la incoraggia. Meglio usare nomi pregnanti semanticamente: Tabella nel nostro caso.

2) Piuttosto è importante definire il tipo dati con una Dim. In tal modo si sfrutta l’intellisense. Nella fattispecie il nostro amico dopo aver digitato objTabella. Avrebbe ottenuto il corretto Add e non Add(). Non aveva che da premere Invio e dormire tranquillo.

Ma ecco la Sub che suggerisco, rivolta a creare la tabella del nostro amico nella selezione corrente, supposta scritta nel modulo ThisDocument:

Sub CreaTab()

  Dim Tabella As Word.Table

  'Aggiungi una tabella con 1 riga e 4 colonne

  Set Tabella = ActiveDocument.Tables.Add(Selection.Range, 1, 4)

  Tabella.Cell(1, 1).Range.Text = "1"

  Tabella.Cell(1, 2).Range.Text = "2"

  Tabella.Cell(1, 3).Range.Text = "3"

  Tabella.Cell(1, 4).Range.Text = "4"

  Tabella.Rows.Add 'Aggiunge una seconda riga

End Sub

Concludo suggerendo una variante che va incontro al grido di dolore di un altro soggetto del Forum, che chiede come aggiungere una tabella in un segnalibro:

Sub CreaTabInBookmark()

  Dim Tabella As Word.Table

  'Aggiungi una tabella con 1 riga e 4 colonne

  Set Tabella = _

  ActiveDocument.Tables.Add(Me.Bookmarks("Qui").Range, 1, 4)

  Tabella.Cell(1, 1).Range.Text = "1"

  Tabella.Cell(1, 2).Range.Text = "2"

  Tabella.Cell(1, 3).Range.Text = "3"

  Tabella.Cell(1, 4).Range.Text = "4"

  Tabella.Rows.Add

End Sub

L’ipotesi è che un segnalibro di nome “Qui” sia stato predisposto nel documento. In questo caso viene creata la stessa tabella di prima, però “a distanza”, ossia ovunque si trovi il cursore del testo.

 

Ma cos’è Me? Come ripeto, le precedenti routine le ho scritte e provate nel modulo ThisDocument , pertanto Me equivale, in tale contesto, a ThisDocument o, a piacere, ActiveDocument. (Per contro anche Me.Tables.Add(…) dovrebbe funzionare, sempre nel modulo ThisDocument).

?>

posted on lunedì 3 aprile 2006 15.22