Makra Word VBA - Znajdź, znajdź i zamień

Słowo VBA Znajdź

Ten przykład to proste słowo makro znajdź tekst „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

Znajdź i zamień

To proste makro wyszuka słowo „ich” i zastąpi je słowem „tam”:

Sub SimpleReplace() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "ich" .Replacement.Text = "tam" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = Fałsz .MatchWildcards = Fałsz .MatchSoundsLike = Fałsz .MatchAllWordForms = Fałsz Koniec z zaznaczeniem.Find.Execute Zamień:=wdReplaceAll End Sub

Znajdź i zamień tylko w zaznaczeniu

To makro VBA znajdzie i zastąpi tekst w zaznaczeniu. Zamieniony tekst zostanie również zapisany kursywą.

Sub ReplaceInSelection() 'zastępuje tekst TYLKO w zaznaczeniu. w dodatku zmienia tekst na kursywę Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "ich" With .Replacement .Font.Italic = True .Text = "tam" End With .Forward = True .Wrap = wdFindStop 'zapobiega to kontynuowaniu programu Word do końca dokumentu .Format = True 'chcemy również zastąpić formatowanie tekstu .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .Match =WordForm Z Selection.Find.Execute Replace:=wdReplaceAll End Sub

Ten wiersz kodu uniemożliwia kontynuowanie VBA do końca dokumentu programu Word:

.Wrap = wdFindStop 'zapobiega to kontynuowaniu programu Word do końca dokumentu

Ten wiersz kodu wskazuje również na zastąpienie formatowania tekstu:

.Format = True 'chcemy również zmienić formatowanie tekstu

Znajdź i zamień tylko w zakresie

Zamiast zastępować tekst w całym dokumencie lub w zaznaczeniu, możemy powiedzieć VBA, aby wyszukiwał i zamieniał tylko w zakresie. W tym przykładzie zdefiniowaliśmy zakres jako pierwszy akapit:

Dim pomarańczowy jako zakres Ustaw pomarańczowy = ActiveDocument.Paragraphs(1).Range
Sub ReplaceInRange() 'zastępuje tekst TYLKO w zakresie [w tym przykładzie tylko w pierwszym akapicie] Dim orange As Range Set orange = ActiveDocument.Paragraphs(1).Range orRange.Find.ClearFormatting orRange.Find.Replacement.ClearFormatting Z orange. Znajdź .Text = "ich" .Replacement.Text = "tam" .Forward = True .Wrap = wdFindStop 'zapobiega to kontynuowaniu programu Word do końca dokumentu .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False koniec z orRange.Find.Execute Replace:=wdReplaceAll End Sub 
wave wave wave wave wave