みなさん,こんにちは。
シンノユウキ(shinno1993)です。
テキストの編集・校正の際に役立つだろうツールを紹介していきます。
今回は,数字の表記統一(1桁数字→全角,2桁以上数字→半角)を行うWordのマクロを紹介します。
全角数字と半角数字の使い分け
数字の表記には主に下記3つのパターンがあります:
- すべて半角
- 1桁は全角,2桁以上は半角
- すべて全角
一般的には,2が使われることが多いのではないでしょうか(たぶん)。
文書内で統一を図ろうとすると,1と3は比較的やりやすいと思えます。何も考えずに,数字のすべてを半角/全角に一括置換すれば良いだけですから,難しくありません。
しかし,2に関しては少し厄介です。1桁の数字と2桁の数字とで目標(半角/全角)が異なるため,置換対象の文字列についても1桁か2桁を判定し,置換する必要があるからです。
Wordの置換機能を使う
とはいえ2に関しても,実はWordの基本機能で行うことができます(少し面倒ですが)。
Wordのワイルドカードを使った検索機能と,文字種の変換機能を使います。すべての数字を全角に変換し,その後2桁以上の数字を半角に変換していきます。
詳細な手順は下記を参照してください:
マクロで手軽に行う
Wordの機能でできるとはいえ,面倒です。面倒なことはマクロにさせてしまいましょう,ということでコードは下記のようになります:
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マクロを紹介しました。
参考になれば!