先日のWordマクロセミナー の受講生からご要望をいただいたマクロです。
セミナー当日は、「1桁の半角数字を探すマクロ」をその場でマクロの記録で作ってみました。
その方の職場では、1桁の数字は全角として、2桁以上の数字は半角とするそうなのです。
この記事では、少し踏み込んで、1桁の半角数字を全角にするマクロにしました。
<目次>
このマクロでできること
本文中にある1桁の半角数字を全角に変換します。
変換個所を蛍光ペン(明るい緑)で着色します。
マクロの解説
1桁の半角数字をワイルドカードを用いて探しています。(8行目)
[!0-9][0-9][!0-9]見ればそのとおりの記述です。
SetRange メソッドを用いて、選択範囲を変えてみました。
マクロ
Sub 一桁半角数字を全角にするマクロ() Dim myRange As Range Set myRange = ActiveDocument.Range(0, 0) With myRange.Find .Text = "[!0-9][0-9][!0-9]" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True Do While .Execute = True With myRange '選択範囲を変更 .SetRange Start:=.Start + 1, End:=.End - 1 '全角化 .CharacterWidth = wdWidthFullWidth '蛍光ペンで着色 .HighlightColorIndex = wdBrightGreen '選択解除 .Collapse Direction:=wdCollapseEnd End With Loop 'ループ処理の後の一休み DoEvents End With 'Rangeオブジェクトの解放 Set myRange = Nothing End Sub
コメント
-
2. Re:Re:【Wordマクロ】1桁の半角数字を全角にする
>kinuasaさん
コメントありがとうございます!
これまた技ありですね。
1桁以上の数字を見つけて、1桁かどうかを確認してから処理。いいですね。そういえば、本件は先日の社内セミナーでも同じ指摘がありました(笑)。
段落先頭の特定も、ワイルドカードだと^13を検索する文字列の先頭にいれなくてはならないので、本文の1文字目は見つけられないので別の処理が必要だったりしますね。
ブログの紹介もありがとうございました。