Substituição De Caracteres Repetidos No Word |
![]() ![]() |
Substituição De Caracteres Repetidos No Word |
Guest_Doxbrieree_* |
![]()
Post
#1
|
Visitantes ![]() |
|
|
|
![]() ![]()
Post
#2
|
|
Moderador ![]() ![]() ![]() Grupo: Root Admin Posts: 170 Registrado: 2-July 08 De: Curitiba - Paraná - Brasil Membro N°: 3 ![]() |
Substituição de caracteres repetidos no Word
Autor: Edson Luiz Branco Gostaria de compartilhar uma dica que tenho feito bastante uso para substituição de caracteres repetidos: no Word, tanto diretamente na caixa de diálogo "Localizar e Substituir" como no VBA, pode-se usar a seqüência de caracteres curinga xxx{2;} onde os caracteres antes da chave (xxx) representam o caracter ou caracteres repetidos que quero localizar/substituir e que no seu caso seria apenas um espaço em branco. Estaríamos dizendo ao Word: "encontre todas as ocorrências de 2 ou mais seqüências xxx que estejam contíguos". Assim, a substituição ocorrerá em apenas uma operação. Para usar esta forma, devemos lembrar de ativar a opção "Usar caracteres curinga" na caixa de diálogo Localizar e Substituir. Além disso, para contar as ocorrências no VBA, poderia ser usado diretamente o método Execute do objeto Find num loop com um contador qualquer, primeiramente sem fazer as substituições (com Replace:=wdReplaceNone), ou fazendo-as uma a uma (com Replace:=wdReplaceOne). Exemplo: CODE Sub SubstituirMúltiplosEspaços() Dim i As Long ActiveDocument.Range(Start:=0, End:=0).Select With Selection.Find .ClearFormatting .Text = " {2;}" .MatchWildcards = True .Forward = True Do While .Execute(Wrap:=wdFindStop, _ Replace:=wdReplaceNone) i = i + 1 Loop If MsgBox("Existem " & i & " ocorrências. Sustituir?", vbYesNo) = vbYes Then .Replacement.ClearFormatting .Replacement.Text = " " .Execute Wrap:=wdFindContinue, Replace:=wdReplaceAll End If End With End Sub Nota-se entretanto que aplicando o código acima, a contagem considera não a quantidade de ocorrências de 2 espaços próximos, mas a de 2 ou mais espaços próximos contíguos. Se for importante saber de 2 em 2, basta alterar o código para: CODE Sub SubstituirMúltiplosEspaços()
Dim i As Long ActiveDocument.Range(Start:=0, End:=0).Select With Selection.Find .ClearFormatting .Text = " " .MatchWildcards = False .Forward = True Do While .Execute(Wrap:=wdFindStop, _ Replace:=wdReplaceNone) i = i + 1 Loop If MsgBox("Existem " & i & " ocorrências. Sustituir?", vbYesNo) = vbYes Then .Text = " {2;}" .MatchWildcards = True .Replacement.ClearFormatting .Replacement.Text = " " .Execute Wrap:=wdFindContinue, Replace:=wdReplaceAll End If End With End Sub |
|
|
![]() ![]() |
Versão Simples | Horário: 10th August 2022 - 11:09 AM |