shikumika’s diary

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

【Word】特定のパターンに一致する文字列検索と置換のサンプル

Wordは特定のパターンに一致する文字列検索もできます。いわゆる正規表現に近い検索が可能です。

例えば、ステップ記録ツールのmhtファイルをWordで編集するポイント で示した作業では、

Step 1: (2023/05/18 18:41:10) ユーザーによる・・・

Step 2: (2023/05/18 18:42:11) ユーザーによる・・・

Step 3: (2023/05/18 18:43:15) ユーザーによる・・・

といったステップの番号と日付、時刻が記録された文字列が頻出します。

このような文字列に対して、ステップの番号と日付が不要というケースなども、Wordの置換機能で「ワイルドカードを使用した検索」と置換で、一括更新が可能。

 

実施した検索方法の備忘録(ワイルドカードを使用した検索方法等の詳細は省きます)。

まず、アウトプットは次のようなイメージ。

この変換が必要な背景は、ステップ記録ツールのmhtファイルを編集するときの編集準備として、次の処理をしたいため。

  • Step番号は、余分なStepを削除したときに番号訂正が必要になるので削除したい。
  • 日付情報は、情報過多になるので削除したい。ただし、時間情報は作業時間の目安として残したい。
  • ステップの見出しと操作の説明が一文になっているので、改行し、見出し設定したい。

 

検索の設定画面は、次のとおり。

 

検索する文字列には、

(Step?[0-9]{1,4}:*[0-9]{4}/?[0-9]{2}/?[0-9]{2}?)([0-9]{2}:[0-9]{2}:[0-9]{2}\)?)

置換後の文字列に

Step (\2^p

を入れて、置換後の設定には、Wordのスタイル変更(見出しに設定)も併せて実施。

 

以上、この設定で、冒頭アウトプットのように一括置換できました。

ステップ記録ツールのmhtファイルをWordで編集している方は、上記設定をそのまま試していただければイメージ持てると思います。

 

WordのVBAでワイルドカードを使用した置換とスタイル変更のサンプル

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

stepの日付削除と見出しに変換
Sub stepの日付削除と見出しに変換()

    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Style = ActiveDocument.Styles("見出し 1")
    With Selection.Find
        .Text = _
            "(Step?[0-9]{1,4}:*[0-9]{4}/?[0-9]{2}/?[0-9]{2}?)([0-9]{2}:[0-9]{2}:[0-9]{2}\)?)"
        .Replacement.Text = "Step (\2^p"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchFuzzy = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

 

以上、Wordで、正規表現検索のように特定のパターンに一致する文字列検索と置換のVBAサンプルです。

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

 

shikumika.org

 

補足

ワイルドカードの使用など、高度な検索と置換については、Wordの公式情報が見つからなかったので、機能的に近いと思われるOutlookの次の情報や、他のサイト等を確認ください。

support.microsoft.com