Word VBA -makron - Hitta, hitta och ersätt

Word VBA Find

Detta exempel är ett enkelt ordmakro hitta texten "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 = Falskt slut med Selection.Find.Execute End Sub

Hitta och ersätta

Detta enkla makro söker efter ordet "deras" och ersätter det med "där":

Sub SimpleReplace () Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "deras" .Replacement.Text = "there" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = Falskt slut med Selection.Find.Execute Ersätt: = wdReplaceAll End Sub

Hitta och ersätt endast i urval

Detta VBA -makro hittar och ersätter text i ett urval. Det kommer också att kursivera den ersatta texten.

Sub ReplaceInSelection () 'ersätter text JUST i valet. i adittion gör den ersatt text kursiv Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "deras" With .Replacement .Font.Italic = True .Text = "there" End With .Forward = True .Wrap = wdFindStop 'detta hindrar Word från att fortsätta till slutet av doc .Format = True' vi vill också ersätta formatering av text .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End Med Selection.Find.Execute Ersätt: = wdReplaceAll End Sub

Denna kodrad hindrar VBA från att fortsätta till slutet av Word -dokumentet:

.Wrap = wdFindStop 'detta hindrar Word från att fortsätta till slutet av doc

Denna kodrad anger att texten också ska ersättas:

.Format = True 'vi vill också ersätta formatering av text

Hitta och ersätt endast inom räckvidd

Istället för att ersätta text i hela dokumentet, eller i ett urval, kan vi berätta för VBA att hitta och ersätta endast inom intervallet. I det här exemplet definierade vi intervallet som det första stycket:

Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range
Sub ReplaceInRange () 'ersätter text JUST i intervallet [i detta exempel bara i första stycket] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Hitta .Text = "deras" .Replacement.Text = "där" .Forward = True .Wrap = wdFindStop 'detta förhindra att Word fortsätter till slutet av doc .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = Falskt slut med oRange.Find.Execute Ersätt: = wdReplaceAll End Sub 
wave wave wave wave wave