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ファイルを編集する準備については、以下をご覧ください。
補足
ワイルドカードの使用など、高度な検索と置換については、Wordの公式情報が見つからなかったので、機能的に近いと思われるOutlookの次の情報や、他のサイト等を確認ください。