Word文書上の全角の英数字・記号を半角にして、カナは全角にするマクロです。いったん半角化が可能な文字をすべて半角にしてから、半角カナを全角にするという処理を行います。
Sub 全角文字を半角に変換()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Content
'すべて半角に
rngDoc.CharacterWidth = wdWidthHalfWidth
'半角カナを全角に
With rngDoc.Find
.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
'濁点・半濁点付き2字セットを処理
Do While rngDoc.Find.Execute(findText:="[ヲ-ン][゙゚]") = True
rngDoc.Text = StrConv(rngDoc.Text, vbWide)
Loop
'残りの半角カナを1字ずつ処理
Do While rngDoc.Find.Execute(findText:="[。-゚]") = True
rngDoc.Text = StrConv(rngDoc.Text, vbWide)
Loop
End Sub
一括で半角変換
rngDoc.CharacterWidth
=
wdWidthHalfWidth
文書全体を選択して[文字種の変換]-[半角] を実行するのと同等です。英数字、記号、カタカナが半角文字に変換されます。段落・文字の書式は維持されます。
半角カナを検索して全角化
StrConv(
半角文字,
vbWide)
で全角に置き換えます。
置換処理は2回に分けて行います。
1回目は半角2字で全角1字になる濁点・半濁点付きの文字(“[ヲ-ン][゙゚]”)です。個別に全角化すると1字にならないため、半角2字セットで変換する必要があります。
2回目ですべての半角カナ(“[。-゚]”)を置換します。
「パガニーニ」→「パガニーニ」→「パガニーニ」といった具合です。
ここで紹介したマクロの処理は、Wordの機能だけでも実現できます。