Macro VBA di Word: trova, trova e sostituisci

Parola VBA Trova

Questo esempio è una semplice macro di parole che trova il testo "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 = Falsa fine con Selection.Find.Execute End Sub

Trova e sostituisci

Questa semplice macro cercherà la parola "loro" e la sostituirà con "là":

Sub SimpleReplace() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "loro" .Replacement.Text = "là" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False Fine con Selection.Find.Execute Replace:=wdReplaceAll End Sub

Trova e sostituisci solo nella selezione

Questa macro VBA troverà e sostituirà il testo in una selezione. Verrà inoltre messo in corsivo il testo sostituito.

Sub ReplaceInSelection() 'sostituisce il testo SOLO nella selezione. inoltre rende il testo sostituito in corsivo Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "loro" Con .Replacement .Font.Italic = True .Text = "there" End With .Forward = True .Wrap = wdFindStop 'questo impedisce a Word di continuare fino alla fine del documento .Format = True 'vogliamo sostituire anche la formattazione del testo .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False Con Selection.Find.Execute Replace:=wdReplaceAll End Sub

Questa riga di codice impedisce a VBA di continuare fino alla fine del documento di Word:

.Wrap = wdFindStop 'questo impedisce a Word di continuare fino alla fine del documento

Questa riga di codice indica di sostituire anche la formattazione del testo:

.Format = True 'vogliamo sostituire anche la formattazione del testo

Trova e sostituisci solo nell'intervallo

Invece di sostituire il testo nell'intero documento o in una selezione, possiamo dire a VBA di trovare e sostituire solo nell'intervallo. In questo esempio abbiamo definito l'intervallo come il primo paragrafo:

Dim oRange As Range Imposta oRange = ActiveDocument.Paragraphs(1).Range
Sub ReplaceInRange() 'sostituisce il testo SOLO nell'intervallo [in questo esempio solo nel primo paragrafo] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs(1).Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Find .Text = "loro" .Replacement.Text = "là" .Forward = True .Wrap = wdFindStop 'questo impedisce a Word di continuare fino alla fine del documento .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With oRange.Find.Execute Replace:=wdReplaceAll End Sub 
wave wave wave wave wave