È possibile aggiungere la punteggiatura mancante ai paragrafi nelle celle delle tabelle con il seguente codice. Per quanto riguarda le condizioni in cui ciò verrebbe eseguito, dovrai dare un'occhiata al mio commento e fornire maggiori informazioni.
Sub AddPunction()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
For Each tbl In ActiveDocument.Tables
For Each tRow In tbl.rows
For Each tCell In tRow.Cells
Set cRng = tCell.Range
cRng.MoveEnd wdCharacter, -1
If cRng.Paragraphs.Count > 0 Then
For Each para In cRng.Paragraphs
Set pRng = para.Range
If Asc(pRng.Characters.Last) = 13 Then
pRng.MoveEnd wdCharacter, -1
End If
If Not Asc(pRng.Characters.Last) = 46 Then
pRng.Text = pRng.Text & "."
End If
Next para
End If
Next tCell
Next tRow
Next tbl
End Sub
In base alle tue domande aggiuntive inserite come commenti, ecco i supplementi alla mia risposta originale:
Per una risorsa su Creazione o Esecuzione di una macro, utilizzare questo collegamento Supporto Microsoft. https://support.office.com/en-us/article/create-or-run-a-macro-c6b99036-905c-49a6-818a-dfb98b7c3c9c
Per quanto riguarda l'altra domanda relativa all'adattamento del codice sopra riportato in base alle nuove informazioni fornite, ecco come modificarlo.
Sub TableLookBackAddPunctuation()
Dim para As Paragraph, tbl As Table, tRow As Row
Dim tCell As Cell, cRng As Range, pRng As Range
Dim rng As word.Range
For Each tbl In ActiveDocument.Tables
For Each tRow In tbl.rows
Set cRng = tRow.Cells(1).Range
cRng.MoveEnd wdCharacter, -1
If cRng.Paragraphs.Count > 0 Then
For Each para In cRng.Paragraphs
Set pRng = para.Range
If Asc(pRng.Characters.Last) = 13 Then
pRng.MoveEnd wdCharacter, -1
End If
Select Case Asc(pRng.Characters.Last)
Case 33, 34, 35, 36, 37, 38, 39, 40, _
41, 42, 43, 44, 45, 46, 63
'do nothing, punctuation already set
Case Else
Set rng = pRng
rng.Collapse wdCollapseStart
With rng.Find
.ClearFormatting
.Format = False
.Forward = False
.MatchCase = True
.Text = pRng.Text
.Wrap = wdFindStop
.Execute
If .found Then
rng.MoveEnd wdCharacter, 1
Select Case Asc(rng.Characters.Last)
Case 33, 34, 35, 36, 37, 38, 39, 40, _
41, 42, 43, 44, 45, 46, 63
pRng.Text = pRng.Text & rng.Characters.Last
Case Else
'do nothing, there's no punctuation
End Select
End If
End With
End Select
Next para
End If
Next tRow
Next tbl
End Sub