【Word VBA】指数を上付きに変更するWordマクロ(その3)

指数を上付きに変更するWordマクロ」と「指数を上付きに変更するWordマクロ(その2)」とで取り上げた話題です。

先日うらたさんからいただいた以下のコメントをヒントにして、別の表記で書いてみました。

ハットマークですが、word2003では下記でワイルドカード検索できるようです。

.Text = “^^”

ヒントをどうもありがとうございました。

そうなんですね。

ワイルドカードで使う記号そのものを検索する場合には、その記号の前に ^ (ハット)を追加するんでしたね。

以前の知識にひっぱられて気づきませんでした。

こうやってコメントいただけること、大変うれしく思います。

間違いやもっといい記述がある場合にはぜひ教えてください。

このマクロでできること

本文中にある ^(ハット)記号の後に連続する半角数字と半角マイナス記号を上付にします。

選択されている蛍光ペンの色で変更した部分をマーキングします。

(上付前)

(上付変換後)

マクロの解説

ワイルドカードによる置換を用いて作りました。

置換後の文字列に蛍光ペンが設定されています。

現在選択されている蛍光ペンの色が反映されます。

検索する文字列(8行目)は、以下のようになっています。

.Text = "^^([0-9-]{1,})"

つまり、^(ハット)の次に半角数字と半角マイナス記号が1文字以上記載されているものを検索しています。

置換後の文字列(9行目~13行目)は、以下のようになっています。

  With .Replacement
   .Text = "\1"
   .Font.Superscript = True
   .Highlight = True
  End With

検索する文字列の括弧の中の数字[0-9-]{1,}\1で受けています。

また、上付文字にして、蛍光ペンでマーキングしていますね。

マクロ


Sub 書式変更_上付き_WildCard()

 Dim myRange As Range '検索用

 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
  .Text = "^^([0-9-]{1,})"
  With .Replacement
   .Text = "\1"
   .Font.Superscript = True
   .Highlight = True
  End With
  .Wrap = wdFindStop
  .MatchWildcards = True
  .Execute Replace:=wdReplaceAll
 End With

 Set myRange = Nothing

End Sub

関連記事

指数を上付きに変更するWordマクロ

指数を上付きに変更するWordマクロ(その2)

指数を上付きに変更するWordマクロ(その3)

コメント

  1. mu より:

    このサイトを参考にさせてもらい、自分なりにコードを考えました。
    もしよろしければ見ていただけると嬉しいです。
    https://qiita.com/mu_mura/items/1e35f55d8dcfcbc506ca

    • 新田順也 より:

      muさん、
      どうもありがとうございます。
      サイトを拝見いたしました。
      AutoHotKeyでWordマクロを実行できるのですか!
      この方法だと文字を書きながら実行できていいですね。
      他にもAutoHotKeyを使っていろいろできるかもしれないですね。
      またいいアイディアがあれば形にしてみてください!

トップへ戻る