みなさん,こんにちは。
シンノユウキ(shinno1993)です。
テキストの編集・校正の際に役立つだろうツールを紹介していきます。
今回は,数字の表記統一(1桁数字→全角,2桁以上数字→半角)を行うWordのマクロを紹介します。
はじめに:全角数字と半角数字の使い分け
数字の表記には主に下記3つのパターンがあります:
① すべて半角
② 1桁は全角,2桁以上は半角
③ すべて全角
一般的には,「②1桁は全角,2桁以上は半角」が使われることが多いのではないでしょうか。
文書内で統一を図ろうとすると,①と③は比較的やりやすいと思えます。
しかし,②は厄介です。1桁の数字と2桁の数字とで目標(半角/全角)が異なるため,置換対象の文字列が1桁か2桁を判定し,置換する必要があるからです。
方法1:Wordの置換機能を使う
とはいえ②に関しても,実はWordの基本機能で行うことができます。
機能としては,Wordのワイルドカードを使った検索機能と,文字種の変換機能を使います。すべての数字を全角に変換し,その後2桁以上の数字を半角に変換していきます。
詳細な手順はこちらの記事を参照してください。
方法2:マクロで手軽に行う
方法1は,Wordの機能でできるとはいえ,面倒です。同様のことは,Word VBA(マクロ)を使用することで行うことができます。コードは下記のようになります:
Sub main()
Call 半角数字を全角へ一括変換
Call 二桁以上の全角数字を半角へ一括変換
End Sub
Sub 半角数字を全角へ一括変換()
Dim rng As Range: Set rng = ActiveDocument.Range(0, 0)
With rng.Find
.text = "[0-9]"
.MatchWildcards = True
.MatchFuzzy = False
Do While .Execute
rng.CharacterWidth = wdWidthFullWidth
rng.Collapse wdCollapseEnd
Loop
End With
Set rng = Nothing
End Sub
Sub 二桁以上の全角数字を半角へ一括変換()
Dim rng As Range: Set rng = ActiveDocument.Range(0, 0)
With rng.Find
.text = "[0-9]{2,}"
.MatchWildcards = True
.MatchFuzzy = False
Do While .Execute
rng.CharacterWidth = wdWidthHalfWidth
rng.Collapse wdCollapseEnd
Loop
End With
Set rng = Nothing
End Sub
手順は,Wordの基本機能でやるのと同様です。① 数字をすべて全角に変換 → ②2桁以上の数字を半角に変換です。
ポイントはrng.Collapse wdCollapseEnd
です。その上のrng.CharacterWidth = wdWidthHalfWidth
で文字が選択されてしまうので,これを入れておかないと次の検索が実行されず,処理が止まってしまうのです。
まとめ
今回は,1桁の数字を全角に,2桁以上の数字を半角にするWordマクロを紹介しました。
参考になれば!