Макроси Word VBA - Знайдіть, знайдіть та замініть

Слово VBA Знайти

У цьому прикладі є простий макрос слова, знайдіть текст «а»:

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 з вибором.

Знайти та замінити

Цей простий макрос буде шукати слово "їх" і замінити його на "там":

Sub SimpleReplace () Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "їх" .Replacement.Text = "там" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End з вибором. Знайти.

Знайти та замінити лише у виділенні

Цей макрос VBA знайде та замінить текст у виділеному місці. Він також курсивом замінить текст.

Sub ReplaceInSelection () 'замінює текст ТІЛЬКИ у виділенні. крім того, він робить замінений текст курсивом Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "їх" З .Replacement .Font.Italic = True .Text = "там" Закінчити з .Forward = True .Wrap = wdFindStop 'це запобігає продовженню Word до кінця документа. Format = True' ми також хочемо замінити форматування тексту. З Selection.Find.Execute Replace: = wdReplaceAll End Sub

Цей рядок коду не дозволяє VBA продовжувати до кінця документа Word:

.Wrap = wdFindStop 'це запобігає продовженню Word до кінця документа

Цей рядок коду вказує також на заміну форматування тексту:

.Format = True 'ми також хочемо замінити форматування тексту

Знайти та замінити лише в діапазоні

Замість того, щоб замінювати текст у всьому документі або в окремому виділенні, ми можемо наказати VBA знаходити та замінювати лише в діапазоні. У цьому прикладі ми визначили діапазон як перший абзац:

Dim oRange As Range Set oRange = ActiveDocument.Параграфи (1).
Sub ReplaceInRange () 'замінює текст ПРОСТО в діапазоні [у цьому прикладі лише в першому абзаці] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting Знайдіть .Text = "їх" .Replacement.Text = "там" .Forward = True. Wrap = wdFindStop 'це запобігає продовженню Word до кінця документа. Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End за допомогою oRange.Find.Execute Replace: = wdReplaceAll End Sub 
wave wave wave wave wave