検索構文をまとめています。
他の基本構文はこちら
よく使用するコードはこちら
Sub 検索基本構文_Range方式() Dim rng As Range '文書の先頭位置にrngをセット Set rng = ActiveDocument.Range(0, 0) With rng.Find .Text = "検索ワード" '検索条件に書式を含める場合 .Font .Frame .Highlight = False .ParagraphFormat .Style = "スタイル名" '検索オプションを指定 'Trueにしたいオプション以外、記述不要 '(Section.Findを用いる場合、Falseの記述も必要) .MatchCase = False '大文字と小文字を区別 .MatchWholeWord = False '完全一致の単語を検索 .MatchByte = False '半角と全角を区別 '↓Trueにできるのは1つのみ .MatchAllWordForms = False .MatchSoundsLike = False 'あいまい検索(英) .MatchWildcards = False 'ワイルドカードを使用 .MatchFuzzy = False 'あいまい検索(日) '↑ '◆単純な置換を行う場合◆ .Replacement.Text = "" '置換後の文字列 .Replacement.Font.Bold = False '置換後の書式 .Execute Replace:=wdReplaceAll 'すべて置換 End With '◆置換では対処できない複雑な処理を行う場合◆ With rng Do While .Find.Execute = True '処理内容を書く 'rngの範囲を検索結果の末尾に変更 '(検索方法によっては別の範囲にrngを再定義) .SetRange .End, .End Loop End With End Sub
Sub 検索の基本構文_Selection方式() '文字カーソルを文頭に移動。 Selection.StartOf Unit:=wdStory, Extend:=wdMove With Selection.Find .ClearFormatting '「.Format」がFalseの時は不要 .Format = False .Text = "検索ワード" .Replacement.Text = "" .Replacement.Font .Forward = True '文書の末尾に到達した場合の設定 .Wrap = wdFindContinue '次の4行は、Trueにする項目を最後に書く。 .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = False '◆単純な置換の場合◆ .Execute Replace:=wdReplaceAll '◆複雑な処理の場合◆ With Selection Do While .Find.Execute = True '処理内容を書く .Collapse wdCollapseEnd '処理内容によっては省略可 Loop End With End With End Sub
Sub 選択範囲のみ処理する基本構文() Dim selRng As Range, rngInRange As Range Dim keyWord As String keyWord = "検索キーワード" Set selRng = Selection.Range Set rngInRange = selRng.Duplicate '選択範囲の文字列と検索ワードが一致している場合 If selRng.Text = keyWord Then '処理内容を書く '例:検査ワードをBold指定 selRng.Font.Bold = True Else With selRng.Find .ClearFormatting '「.Format」がFalseの時は不要 .Text = keyWord .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False '書式を扱う場合はTrue .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False '◆複雑な処理の場合◆ Do While .Execute If selRng.InRange(rngInRange) Then '処理内容を書く selRng.SetRange selRng.End, selRng.End Stop Else Exit Do End If Loop End With End If End Sub