文書中に記述されている、「○○○○円」という金額、つまり半角数字の並びの末尾に「円」が付いている文字列をすべて探し出して、赤色に変換する、というものです。これをマクロで実行するためのコードです。
その記事は、
⇒ こちらをご覧ください。
今回は、文字の書式変更(例えば文字色変更)ではなく、別の文字への置換を紹介します。
昨日(2022年2月22日)の記事と同じことをマクロで実行するにはどういうコードを書くか、「VBAマクロ版」となります。
大事なことでもすぐに忘れっちまう、将来の自分への備忘録です。
まず、そのVBAコードを掲載しておきます。
Sub enchikan()
Dim myR As Range
Set myR = ActiveDocument.Range(0, 0)
With myR.Find
.Text = "([0-9,]{1,})円"
.MatchWildcards = True
.Replacement.Font.Color = vbRed
.Replacement.Text = "¥¥1"
.Execute Replace:=wdReplaceAll
End With
End Sub
このマクロを実行すると、
「○,○○○円」の文字列が、赤色着色すると同時に、
「¥○,○○○」へと置換されます。
金額の単位が、円表示から¥表示へ(「金額末尾の円」から「金額冒頭の¥」へ)と変わります。
.Replacement.Text = "¥¥1" の部分では、円マークが2つ続いていますが、1文字目は全角文字、2文字目は半角文字とする必要があります(理由は、この記事の後ろの方に書いています。)。
上記コード中の要点を解説します。
検索文字列を、半角カッコ「()」で囲むと、カッコ内が一塊(ひとかたまり)の集合体となり、式が生成されます。
そして、その式は出現順に、1、2、3・・・と、式番号が付きます。
その上で、置換後の文字列において、
「¥」と式番号の組み合わせ(¥+式番号)
とすることで、式の結果を呼び出すことができます。
上記コードにおいては、([0-9,]{1,})と、半角数字の羅列を半角カッコで囲んでいます。そうすると、カッコ内が1つの集合体(式)となり、順番に番号が付くから、置換後の文字列を「¥式番号(¥1)」と記述することで、式の結果が利用できています。
おぉ、こりゃあ、便利だわぁ。
なお、金額表示を漢字の「円」ではなく、円マーク(円記号)に置換する場合は、注意が必要です。
置換後の文字が「全角」の円マークであれば、キーボード上の「¥」キーをタイプする、通常の入力方法で何ら問題がありません。
ところが、「半角」の円マークへと置換したいというときは、すんなりとはいきません。キーボード上の半角の円マークをタイプする方法で入力して、そのマクロを実行しようとすると、「置換後の文字列に使用できない文字が使われています。」みたいなエラーメッセージが出て、怒られてしまいます。
そこで、
.Replacement.Text = "^92¥1"
とします。
半角の円マークはワイルドカードなので、特殊記号を入力できる「^」(キャロット)を使います。これで対処できます。
それでは、また次の記事で
■■■■ goosyun ■■■■
最近の「VBAプログラミング・マクロ」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事