【ワードマクロ】全角数字を半角数字に一括変換:高速化する方法

ワードマクロで全角数字を半角数字に変換アイキャッチ ワードマクロで効率化する

ワードマクロで、全角数字を半角数字に変換するVBAコードをご紹介します。
※英字は半角に変換されません。

ワード文書で数値を入力する場合は、全角、または半角のどちらかに統一すると、
見栄えがきれいですし、見る側に「きちんとした文章」という印象を持ってもらえると思います。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください!

全角数字を半角数字に一括変換

以下のWordVBAを実行すると、
ワードファイル内にある、数字を全角から半角に変換します。

Sub 全角を半角に変える()

Dim MyRange As Range

  Application.ScreenUpdating = False

    Set MyRange = ActiveDocument.Range(0, 0)
    
    MyRange.Find.ClearFormatting
    
    With MyRange.Find
        .Text = "[0-9]"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
        .MatchFuzzy = False
    End With
    
    '検索実行
    Do While MyRange.Find.Execute

        '検索対象があったら
        If MyRange.Find.Found = True Then

            '半角数字に変える
            MyRange.CharacterWidth = wdWidthHalfWidth

        End If
    Loop
    
    Set MyRange = Nothing

  Application.ScreenUpdating = true

End Sub

 

マクロ実行前

ファイル内に、全角数字と半角数字が混在している状況です。

ワードマクロ 数字を全角から半角に変換・置換する前

マクロ実行後

全角数字を半角数字に変換しました。
英字は、半角に変換されません。

数字を半角から全角に変換・置換した後と前を同一画像で説明

VBAコードの解説

[Set MyRange = ActiveDocument.Range(0, 0)] は、
ワードファイルの先頭から、文字検索するように設定しています。

[.Text = “[0-9]”] は、
ワイルドカードを使って、全角の数字が文書内に存在しているかチェックしています。

[MyRange.CharacterWidth = wdWidthHalfWidth] は、
全角数値を見つけた場合、半角数値に変換します。
変換は1文字ずつ行われ、全角数値がファイル内に存在しなくなるまで、変換処理を繰り返します。
 

全角数字を半角数字に一括変換(表内のみ)

以下のWordVBAを実行すると、
ワードファイル内にある、表内の数字を全角から半角に変換します。

Sub 表の全角を半角に変える()
 
Dim Char As Object
         
  Application.ScreenUpdating = False

    '1文字ずつ取得
    For Each Char In ActiveDocument.Characters
    
        With Char.Find
            .Text = "[0-9]"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = False
            .MatchAllWordForms = False
            .MatchSoundsLike = False
            .MatchWildcards = True
            .MatchFuzzy = False
        End With
    
       '全角数字があったら
       If Char.Find.Execute = True Then

           '表内だったら半角数字に変える
           If Char.Tables.Count = 1 Then
               Char.CharacterWidth = wdWidthHalfWidth
           End If
   
       End If

    Next Char

  Application.ScreenUpdating = true
 
End Sub

マクロ実行前

表内に全角数字と、半角数字が混在している状況です。
表の外には、全角数字があります。

マクロ実行後

表内の全角数字を半角数字に変換しました。

表の外の数字は、処理の対象外なので変換されません。
英字は、半角に変換されません。

VBAコードの解説

[For Each Char In ActiveDocument.Characters] は、
ファイル内の文字を1つずつループします。

[If Char.Tables.Count = 1 Then] は、
全角数字が表内にある場合に、
次の処理である[Char.CharacterWidth = wdWidthHalfWidth] に進みます。
文字が表内にない場合は、[Tables.Count = 0] という判定になります。
 

【ワードマクロ】文字色を一括で変更:4つの使用例を紹介するよ
「文字色を変更する」WordVBAコードの組み方を記載しています。複数パターンを図解付きで説明しています。[Color]プロパティで対象文字を赤・青・緑など好きな色に一括で変更できます。[Select Case ]を使用し、指定した文字列によって色分けすることもできます。スキルシートをチェックするツールとして組み込んでいたマクロです。