shikumika’s diary

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

【Word】ファイル内のフィールドを一括削除する方法(一括置換とVBA)

Wordファイルで、ファイル内にある「フィールド」を一括で削除する方法の備忘録。

背景は、ステップ記録ツールのmhtファイルをWordで編集するポイント で示したように、「Previous Next」などのハイパーリンクが余分で削除したかったため。

「Previous Next」は、検索して一括で空白に置換する時は少し注意が必要。わかりづらいがフィールドの文字で、”Previous”と”Next”は別々に検索して置換が必要。ただし、この置換ではWordの表示上は空白で削除できているが、フィールドコードは残っている見込。

 

目的上は上記でも問題なさそうだが、フィールド文字を完全に消したい場合は、

フィールドコードの表示(表示されていない場合、Alt キーを押しながら F9 キーを押す)をして、”^d”の特殊文字を使って検索、置換する。

参考: フィールド コード: Hyperlink フィールド - Microsoft サポート

 

フィールドコードが表示されている状態とは、「Previous Next」と表示されている箇所が、次のように”{ }”(波括弧)で表示されている状態。

例: {HYPERLINK \l "Step1" \o "前へ"}{HYPERLINK \l "Step3" \o "次へ"}

 

具体的なイメージは、下記のとおり①から③の順にする。

なお、特殊文字の”^d”で検索するときは、必ず、フィールドコードの表示(表示されていない場合、Alt キーを押しながら F9 キーを押す)が必要。

 

WordのVBAでフィールドを一括削除する方法

なお、この上記検索をVBAで実施するサンプルは次のとおり。

ファイル内にある全てのフィールドを一括削除(空白に置換)する。

フィールドコードの表示と削除
Sub フィールドコードの表示と削除()

    ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^d"
        .Replacement.Text = ""
        .Wrap = wdFindContinue
        .MatchWildcards = False
        .MatchFuzzy = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll 'Withの外の方が動作安定
   
End Sub

以上、Wordで、ファイル内のフィールドを一括削除について、一括置換とVBAでする方法でした。

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

 

shikumika.org