【ワードマクロ】全角数字を半角数字に一括変換:使用例2選

ワードマクロで全角数字を半角数字に変換アイキャッチ WordVBA

ワードマクロで、全角数字を半角数字に変換する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] という判定になります。
 
この記事がお役に立ちますと幸いです🍀
 

【ワードマクロ】文字色を一括で変更:使用例5選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説