Word VBA Find
Este exemplo é uma macro de palavras simples, localize o texto “a”:
Sub SimpleFind () Selection.Find.ClearFormatting With Selection.Find .Text = "a" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute End Sub
Encontrar e substituir
Esta macro simples irá pesquisar a palavra “deles” e substituí-la por “lá”:
Sub SimpleReplace () Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "seu" .Replacement.Text = "lá" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Substituir: = wdReplaceAll End Sub
Localizar e substituir apenas na seleção
Esta macro VBA localizará e substituirá o texto em uma seleção. Ele também colocará em itálico o texto substituído.
Sub ReplaceInSelection () 'substitui o texto APENAS na seleção. além disso, torna o texto substituído em itálico Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "seu" Com .Replacement .Font.Italic = True .Text = "lá" End With .Forward = True .Wrap = wdFindStop 'isso impede que o Word continue até o final do documento .Format = True' queremos substituir a formatação do texto também .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End Com Selection.Find.Execute Replace: = wdReplaceAll End Sub
Esta linha de código impede que o VBA continue até o final do documento do Word:
.Wrap = wdFindStop 'isso impede que o Word continue até o final do documento
Esta linha de código indica a substituição da formatação do texto também:
.Format = True 'queremos substituir a formatação do texto também
Encontrar e substituir apenas no intervalo
Em vez de substituir o texto em todo o documento ou em uma seleção, podemos dizer ao VBA para localizar e substituir apenas no intervalo. Neste exemplo, definimos o intervalo como o primeiro parágrafo:
Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range
Sub ReplaceInRange () 'substitui o texto APENAS no intervalo [neste exemplo apenas no primeiro parágrafo] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Find .Text = "seu" .Replacement.Text = "lá" .Forward = True .Wrap = wdFindStop 'isso impede que o Word continue até o final do documento .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With oRange.Find.Execute Replace: = wdReplaceAll End Sub