Articolo wiki
  • Questo articolo wiki è bloccato
Applicabile a 366 visualizzazioni

Word - Allineare il testo delle celle di una tabella - VBA

Riepilogo

Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: Word (2003/2007/2010/2013)

Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e Word e sono forniti solo a scopo dimostrativo.

 

Situazione.

Alcune semplici macro che consentono l'allineamento del testo all'interno delle celle di una tabella. Qui il riferimento è alla prima tabella del documento attivo. I nomi delle Sub sono esplicativi.

 

Public Sub mAllineaCentro1()
    ActiveDocument.Tables(1).Select
    With Selection.Paragraphs
        .Alignment = wdAlignParagraphCenter
    End With
End Sub

 

Public Sub mAllineaSinistra1()
    ActiveDocument.Tables(1).Select
    With Selection.Paragraphs
        .Alignment = wdAlignParagraphLeft
    End With
End Sub

 

Public Sub mAllineaDestra1()
    ActiveDocument.Tables(1).Select
    With Selection.Paragraphs
        .Alignment = wdAlignParagraphRight
    End With
End Sub

 

 

Nel caso si voglia eseguire l'operazione di allineamento solo su alcune colonne (negli esempi qui sotto le colonne (1, 3, 5) della tabella:

 

Public Sub mAllineaCentro2()
  Dim lng As Long
  With ActiveDocument.Tables(1)
    For lng = 1 To 5 Step 2
        On Error Resume Next
        .Columns(lng).Select
        Selection.ParagraphFormat.Alignment = _
          wdAlignParagraphCenter
    Next
  End With
End Sub

 

Public Sub mAllineaSinistra2()
  Dim lng As Long
  With ActiveDocument.Tables(1)
    For lng = 1 To 5 Step 2
        On Error Resume Next
        .Columns(lng).Select
        Selection.ParagraphFormat.Alignment = _
          wdAlignParagraphLeft
    Next
  End With
End Sub

 

Public Sub mAllineaDestra2()
  Dim lng As Long
  With ActiveDocument.Tables(1)
    For lng = 1 To 5 Step 2
        On Error Resume Next
        .Columns(lng).Select
        Selection.ParagraphFormat.Alignment = _
          wdAlignParagraphRight
    Next
  End With
End Sub

 

Figura 1: La tabella di Word allineata con la Sub mAllineaCentro2

 

E' stata aggiunta l'istruzione On Error Resume Next nel caso la tabella non contenga un numero di colonne pari a quello ciclato (ad esempio per il codice qui sopra la tabella abbia solo 4 colonne o l'istruzione For ecceda le 5 colonne: For lng = 1 to 10 Step 2).

 

NOTA. Word non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei documenti. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Word senza che vengano eseguite le macro.


Risorse.

 


 Avvio Pulito di Windows
(courtesy of Microsoft MVP Franco Leuzzi)


Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)






Commenti (0)

avanzamento