Word 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 With Selection.Find.Execute End Sub
Найти и заменить
Этот простой макрос будет искать слово «их» и заменять его на «там»:
Sub SimpleReplace () Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "their" .Replacement.Text = "there" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Заменить: = wdReplaceAll End Sub
Найти и заменить только в выделенном
Этот макрос VBA найдет и заменит текст в выделенном фрагменте. Замененный текст также будет выделен курсивом.
Sub ReplaceInSelection () 'заменяет текст ТОЛЬКО в выделении. кроме того, замененный текст выделяется курсивом Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "their" With .Replacement .Font.Italic = True .Text = "there" End With .Forward = True .Wrap = wdFindStop 'это предотвращает продолжение Word до конца документа .Format = True' мы также хотим заменить форматирование текста .MatchCase = False .MatchWholeWord = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End С помощью Selection.Find.Execute Replace: = wdReplaceAll End Sub
Эта строка кода предотвращает продолжение VBA до конца документа Word:
.Wrap = wdFindStop 'предотвращает продолжение Word до конца документа.
Эта строка кода указывает также на замену форматирования текста:
.Format = True 'мы также хотим заменить форматирование текста
Найти и заменить только в пределах досягаемости
Вместо того, чтобы заменять текст во всем документе или в выделенном фрагменте, мы можем указать VBA искать и заменять только в диапазоне. В этом примере мы определили диапазон как первый абзац:
Установить Dim oRange как диапазон oRange = ActiveDocument.Paragraphs (1) .Range
Sub ReplaceInRange () 'заменяет текст ТОЛЬКО в диапазоне [в этом примере только в первом абзаце] Dim oRange As Range Set oRange = ActiveDocument.Paragraphs (1) .Range oRange.Find.ClearFormatting oRange.Find.Replacement.ClearFormatting With oRange. Найдите .Text = "их" .Replacement.Text = "there" .Forward = True .Wrap = wdFindStop ', чтобы Word не продолжил работу до конца документа .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End with oRange.Find.Execute Заменить: = wdReplaceAll End Sub