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