選択部分のフィールドコードだけを表示させる(Word)

選択範囲のフィールドコードを表示させる

キーボード上での[Shift] + [ F9 ](半角モード)をVBAで実現する方法。

これまで、[Window].[View].ShowFieldCodesプロパティのオンオフ(True/False)切り替えしか知らなかった。

ちょこちょこっと調べてみたら、選択範囲のフィールドコードだけを表示させる方法が判明したので、覚書的に記しておく。

FieldオブジェクトのShowCodesプロパティ

早い話、[Field].ShowCodesプロパティのオンオフ(True/False)を切り替えたらよい。それだけ。

リスト1
Private Sub test()
  Dim tgtField As Field
  Set tgtField = Selection.Fields(1)
  With tgtField
    .ShowCodes = Not .ShowCodes
  End With
End Sub

とりあえず、選択範囲にフィールドコードがあることが前提の決め打ちコード。

フィールドコードのある部分を選択せずにこのコードを実行したら、当然実行時エラーになるので注意。

ドキュメント(笑)上で、

f:id:akashi_keirin:20200204075706j:plain

このようにルビが施された部分を選択して、リスト1を何度か実行。

f:id:akashi_keirin:20200204075654g:plain

このように、あたかも[Shift] + [ F9 ]を押したかのように、フィールドコードの表示・非表示が切り替えられる。

おわりに

ルビ情報を殺さずにフィールドコードを書き換える()には、

  • 一旦フィールドコードを表示させる
  • Find.Executeメソッドを用いてフィールドコードを置換する
  • 再度フィールドコードを非表示にする

という非常に面倒な操作が必要っぽいので、いちいち全てのフィールドコードを表示させなくても済む、というのは、処理速度の関係でちょっと有利になるかも知れない。いや、知らんけど。

フィールドコード文字列は、[Field].Code.Textプロパティで取得することができるが、マクロでこのプロパティを書き換えることによってフィールドコードを書き換えた場合、ルビ情報が一部死ぬ。

詳しくは、

akashi-keirin.hatenablog.com

コチラをどうぞ。