ワードマクロで、全角数字を半角数字に変換する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] という判定になります。
この記事がお役に立ちますと幸いです🍀
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説