「指数を上付きに変更する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