Word VBA-Makros - Suchen, Suchen und Ersetzen

Wort VBA-Suche

Dieses Beispiel ist ein einfaches Wortmakro, um den Text „a“ zu finden:

Sub SimpleFind() Selection.Find.ClearFormatting With Selection.Find .Text = "a" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = Fals .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute End Sub

Suchen und Ersetzen

Dieses einfache Makro sucht nach dem Wort „ihr“ und ersetzt es durch „dort“:

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

Nur in Auswahl suchen und ersetzen

Dieses VBA-Makro sucht und ersetzt Text in einer Auswahl. Außerdem wird der ersetzte Text kursiv gedruckt.

Sub ReplaceInSelection() 'ersetzt den Text NUR in der Auswahl. außerdem macht es ersetzten Text kursiv Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "ihr" With .Replacement .Font.Italic = True .Text = "dort" End With .Forward = True .Wrap = wdFindStop 'dies verhindert, dass Word bis zum Ende des Dokuments fortfährt With Selection.Find.Execute Replace:=wdReplaceAll End Sub

Diese Codezeile verhindert, dass VBA bis zum Ende des Word-Dokuments fortfährt:

.Wrap = wdFindStop 'dies verhindert, dass Word bis zum Ende des Dokuments fortfährt

Diese Codezeile gibt an, auch die Formatierung des Textes zu ersetzen:

.Format = True 'wir möchten auch die Formatierung von Text ersetzen

Nur im Bereich suchen und ersetzen

Anstatt Text im gesamten Dokument oder in einer Auswahl zu ersetzen, können wir VBA anweisen, nur im Bereich zu suchen und zu ersetzen. In diesem Beispiel haben wir den Bereich als ersten Absatz definiert:

Dim oRange As Range Set oRange = ActiveDocument.Paragraphs(1).Range
Sub ReplaceInRange() 'ersetzt Text NUR im Bereich [in diesem Beispiel nur im ersten Absatz] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs(1).Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Find .Text = "ihr" .Replacement.Text = "dort" .Forward = True .Wrap = wdFindStop 'dies verhindert, dass Word bis zum Ende des Dokuments fortfährt .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False Ende mit oRange.Find.Execute Replace:=wdReplaceAll End Sub 
wave wave wave wave wave