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

Word - Numero progressivo nella colonna della 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 Word e sono forniti solo a scopo dimostrativo.

 

Situazione.

Abbiamo una tabella sul documento di Word e vogliamo che in una colonna venga inserito un numero progressivo per ogni cella.

 

Queste due semplici macro ( il codice fa riferimento alla prima tabella inserita nel documento attivo) inseriscono il numero progressivo nella prima colonna a partire dalla seconda riga (il risultato è identico) presumendo la prima riga occupata dalle intestazioni di colonna:

 

 

Public Sub m_1()

    On Error GoTo RigaErrore
   
    Dim lRow As Long
    With ThisDocument.Tables(1)
        For lRow = 2 To .Rows.Count
            .Cell(lRow, 1).Range.Text = _
                lRow - 1
        Next
    End With

RigaChiusura:
    Exit Sub

RigaErrore:
    If Err.Number = 5941 Then
        MsgBox "La tabella o la colonna non esistono"
    Else
        MsgBox Err.Number & vbNewLine & Err.Description
    End If
    Resume RigaChiusura

End Sub

 

Public Sub m_2()

    On Error GoTo RigaErrore
   
    Dim lRow As Long
    With ThisDocument.Tables(1)
        For lRow = 2 To .Rows.Count
            .Rows(lRow).Cells(1).Range.Text = _
                lRow - 1
        Next
    End With
   
RigaChiusura:
    Exit Sub

RigaErrore:
    If Err.Number = 5941 Then
        MsgBox "La tabella o la colonna non esistono"
    Else
        MsgBox Err.Number & vbNewLine & Err.Description
    End If
    Resume RigaChiusura

End Sub

Figura 1: La tabella di Word con la numerazione in colonna 1 a partire dalla seconda riga

 

Nel caso non ci sia l'intestazione e si voglia partire dalla prima riga:

 

Public Sub m_3()

    On Error GoTo RigaErrore
   
    Dim lRow As Long
    With ThisDocument.Tables(1)
        For lRow = 1 To .Rows.Count
            .Cell(lRow, 1).Range.Text = _
                lRow
        Next
    End With
   
RigaChiusura:
    Exit Sub

RigaErrore:
    If Err.Number = 5941 Then
        MsgBox "La tabella o la colonna non esistono"
    Else
        MsgBox Err.Number & vbNewLine & Err.Description
    End If
    Resume RigaChiusura

End Sub

 

Public Sub m_4()

    On Error GoTo RigaErrore
   
    Dim lRow As Long
    With ThisDocument.Tables(1)
        For lRow = 1 To .Rows.Count
            .Rows(lRow).Cells(1).Range.Text = _
                lRow
        Next
    End With
   
RigaChiusura:
    Exit Sub

RigaErrore:
    If Err.Number = 5941 Then
        MsgBox "La tabella o la colonna non esistono"
    Else
        MsgBox Err.Number & vbNewLine & Err.Description
    End If
    Resume RigaChiusura

 

End Sub

 

 

Figura 2:  La tabella di Word con la numerazione in colonna 1 a partire dalla prima riga

 

E' possibile formattare a nostra scelta il contenuto delle celle. Ad esempio:

 

Public Sub m_5()

    On Error GoTo RigaErrore
   
    Dim lRow As Long
    With ThisDocument.Tables(1)
        For lRow = 2 To .Rows.Count
            .Cell(lRow, 1).Range.Text = _
                "Art" & Format(lRow - 1, "000")
        Next
    End With

RigaChiusura:
    Exit Sub

RigaErrore:
    If Err.Number = 5941 Then
        MsgBox "La tabella o la colonna non esistono"
    Else
        MsgBox Err.Number & vbNewLine & Err.Description
    End If
    Resume RigaChiusura

End Sub

 

 

Figura 3: La tabella di Word con la numerazione in colonna 1 con formattazione personalizzata a partire dalla seconda riga

 

Per cambiare il riferimento alla colonna, modificare in questo modo le righe interessate nelle varie macro. Ad esempio per avere la numerazione dalla seconda riga in colonna 3:

 

            .Cell(lRow, 3).Range.Text = _
                lRow - 1

 

oppure:

 

            .Rows(lRow).Cells(3).Range.Text = _
                lRow - 1

 



Figura 4: La tabella di Word con la numerazione in colonna 3 a partire dalla seconda riga

 

La correzione degli errori intercetta il riferimento a tabelle o colonne non presenti sul documento attivo.

 

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.

Commenti (2)

avanzamento