Você pode usar o mecanismo VBA RegEx do Word em vez da pesquisa com curinga do Word.
Ok, a tarefa era encontrar todas as strings com o seguinte padrão
###.###
###.###.###
###.###.###.###
###.###.###.###.###
O melhor padrão que eu pude criar foi
([\w\d]{3}\.){1,4}[\w\d]{3}
que retorna os seguintes hits marcados com amarelo
Explicaçãodopadrão
\w
correspondeaumúnicocaracteredeA-z.Nãofazdistinçãoentremaiúsculaseminúsculas\d
correspondeaumdígito0-9[\w\d]{3}
correspondea3caracteresoudígitoscomoABC
,abc
,123
,Ab1
-masnãoA$C
ouABCD
([\w\d]{3}\.){1,4}
correspondea1,2,3ou4gruposcomoseguinteponto\.
.Oúltimogrupo[\w\d]{3}
nãopedeumpontoseguinte
MacroVBA
PressioneALT+F11paraabriroeditordoVBA.Coleocódigoemqualquerlugareexecute-ocomF5
Sub RegExMark()
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True
RegEx.Pattern = "([\w\d]{3}\.){1,4}[\w\d]{3}"
Set Matches = RegEx.Execute(ActiveDocument.Range)
For Each hit In Matches
Debug.Print hit
ActiveDocument.Range(hit.FirstIndex, hit.FirstIndex + hit.Length). _
HighlightColorIndex = wdYellow
Next hit
End Sub
Advertência
Como marcado em vermelho na imagem de exemplo, o padrão atual tem uma falha e também corresponde a substrings de cadeias que são muito longas. Eu joguei um pouco com \b
, [^\.]
e \s
, mas nenhum deles funcionou para todos os casos. Talvez outros usuários possam encontrar uma solução válida?