OK, andei pesquisando o modelo de objeto VBA do Word e descobri isso (o Microsoft VBScript Regular Expressions 5.5 habilitado):
Sub TrimCellSpaces()
Dim myRE As New RegExp
Dim itable As Table
Dim C As Cell
myRE.Pattern = "\s+(?!.*\w)"
For Each itable In ThisDocument.Tables
For Each C In itable.Range.Cells
With myRE
C.Range.Text = .Replace(C.Range.Text, "")
End With
Next
Next
End Sub
Curiosamente, minha tentativa inicial (usando Trim(C.Range.Text)
) não removeu os espaços, ao contrário, adicionou um marcador de parágrafo ao final de cada célula. Intrigado com isso, eu tentei um regex \s+$
com os mesmos resultados. Inspecionando a árvore de objetos local, descobri que uma célula que continha o texto Note
na verdade continha Note \x0d\x0d\x07
( Eu descobri por que este é o caso ). É por isso que eu tive que usar esse regex estranho para encontrar os últimos espaços em uma célula ...