shikumika’s diary

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

【Word】単語中の一部だけが違う類似文字列の一括検索と置換

Wordで、単語中の一部だけが違う類似文字列の一括検索と置換。いわゆる「ワイルドカードを使用した検索」と置換の備忘録。

具体的には、ステップ記録ツールのmhtファイルをWordで編集するポイント で示した作業で、ファイル内に

手順 1 のスクリーン ショット。  

手順 2 のスクリーン ショット。  

手順 3 のスクリーン ショット。  

・・・

といった数字だけが違うような文字列を一括検索と置換をしたいケースなど。画面でわかりづらいが、文字列内に空白文字もいくつかある。

この文字列を検索して削除する場合は、検索と置換で「ワイルドカードを使用する」にチェックし、次のように検索と置換をする。

  1. 「検索する文字列」には、元のWordの文字をそのままコピーして、数字部分を「*(半角アスタリスク)」で表現する。
  2. 「置換後の文字列」は、何も空欄のままとする。

 

例えば、”手順 1 のスクリーン ショット。”といった場合は、以下となる。  

例) 手順*のスクリーン ショット。

 

下図のサンプルは、文末にあるスペースと改行も削除したかったので、

例) 手順*のスクリーン ショット。?^13

としている。

なお、スペースを明確にして、検索したいのなら次になる。

手順*のスクリーン^32ショット。^32^13

ASCIIコードで、32が空白、13が改行を意味するので。

 

WordのVBAでのワイルドカードを使用した置換

上記置換をVBAで実施するサンプルは次のとおり。

手順のスクリーンショットの文字列削除
Sub 手順のスクリーンショットの文字列削除()

    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
        .Text = "手順*のスクリーン^32ショット。^32^13"
        .Replacement.Text = ""
        .Wrap = wdFindContinue
        .MatchFuzzy = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

なお、Selection.HomeKey Unit:=wdStoryは、検索動作の安定用です。詳細はこちらに記載しました。

以上、Wordで、単語中の一部だけが違う類似文字列の一括検索と置換する方法(VBA含む)でした。

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

 

shikumika.org

 

参考情報

ワイルドカードの使用など高度な検索と置換については、Wordの公式情報が見つからなかったので、機能的に近いと思われるOutlookの情報と、ASCII 文字を挿入の参考情報は次のとおり。

 

support.microsoft.com

 

support.microsoft.com