shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Word】特定の単語を検索し、その単語間にある文章を削除する方法

Wordで、特定の単語を検索し、その単語間にある文章を削除したい場合があります。

そのような時に役立つのも、Wordの置換機能で「ワイルドカードを使用した検索」です。

ワイルドカードを使用することで、特定の単語間にある文章を検索して削除することができます。

今回も、ステップ記録ツールのmhtファイルをWordで編集するポイント で示した作業事例です。

 

具体的には、ファイル内に”Additional Details”という文字列から”Return to top of page...”の文字列までの文章が不要というケース。

Additional Details
The following section contains the additional details that were recorded. 
These details help accurately identify the programs and UI you used in this recording. 

(中略)※ 数ページあり

DesktopWindowXamlSource, Windows.UI.Composition.DesktopWindowContentBridge, タスク バー, Shell_TrayWnd
Return to top of page... 

マウスでドラッグして削除しても10秒もかからない程の作業ですが、VBAでの自動化もしたく、検索機能の備忘録。

 

手順は、次のとおり。

  1. 「Ctrl + H」キーを押すなどで、「検索と置換」の画面を開く
  2. 「検索する文字列」に、削除したい文章の始まりと終わりの二つの単語を「*(半角アスタリスク)」でつなげて入力する。
    例: "Additional Details*Return to top of page..."
  3. 「置換後の文字列」は空欄のままにする。(削除のため)
  4. 「オプション」で、「ワイルドカードを使用する」にチェックを入れる
  5. 「置換」を実行する。

これで、特定の単語間にある文章を検索して削除することができます。

ワイルドカードを使用することで、このように単語間にある特定の文章を削除することができます。

 

なお、十分に調査しきれていないですが、Wordのワイルドカードを使用した検索では、条件に合致する最も短い文字列が検索対象となるようです(最短一致)。

 

以上、特定の単語間にある文章をワイルドカードを使用した検索で削除する方法でした。

 

WordのVBAで特定の単語を検索し、その単語間にある文章を削除

上記の置換と、ステップ記録ツールのmhtファイルの冒頭にある「Recorded StepsからStepsまでの置換」のサンプル。

冒頭RecordedStepsからStepsの削除
Sub 冒頭RecordedStepsからStepsの削除()
    
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
     
     With Selection.Find
        .Text = "Recorded?Steps*Steps^13"
        .Replacement.Text = ""
        .Wrap = wdFindContinue
        .MatchFuzzy = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll 'Withの外の方が動作安定

End Sub

このサンプルだけの特定用途になるが、”Steps”の単語が頻出のため、削除したい文章の最後となる単語を明確にするため、”Steps^13”とし、改行文字と併せて検索している。

 

AdditionalDetailsから最後まで削除
Sub AdditionalDetailsから最後まで削除()

    ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
     
     With Selection.Find
        .Text = "Additional Details*Return to top of page..."
        .Replacement.Text = ""
        .Wrap = wdFindContinue
        .MatchFuzzy = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

検索文字列の”Return to top of page”の箇所は、フィールドの文字。

 

以上、Wordで特定の単語を検索し、その単語間にある文章を削除するVBAサンプルでした。

手順書作成のために、WordのVBAでステップ記録ツールのmhtファイルを編集する準備については、以下をご覧ください。

 

shikumika.org