Macでも使へるやうにとRegExpなしでやってみたものの,よくわからないエラーで動かなかったので動くのかもよく知らない。もっとすっきり書けるのではと思ふが,VBA初心者すぎてよく分らない。
Option Explicit
Sub Arabic2HanInJa()
Dim para As Paragraph
Dim chr As Range
Dim numFlag As Boolean
Dim replFlag As Boolean
Dim replBegin As Integer
Dim replChr As Integer
Dim chrNum As Integer
For Each para In ActiveDocument.Paragraphs
numFlag = False
replFlag = True
chrNum = 1
For Each chr In para.Range
With chr
If .Text Like "[!a-zA-Z0-9 ]" Then
If replFlag And numFlag Then
For replChr = replBegin To chrNum
para.Range.Characters(replChr).Text = _
Arabic2Han(CInt(para.Range.Characters(replChr).Text))
Next replChr
Else
replFlag = True
End If
Else
If .Text Like "[0-9]" Then
If numFlag = False Then
numFlag = True
replBegin = chrNum
End If
Else
replFlag = False
End If
End If
End With
chrNum = chrNum + 1
Next chr
If numFlag And replFlag Then
For replChr = replBegin To chrNum
para.Range.Characters(replChr).Text = _
Arabic2Han(CInt(para.Range.Characters(replChr).Text))
Next replChr
End If
Next para
End Sub
Function Arabic2Han(num As Integer) As String
Dim hanNumeral()
hanNumeral = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九")
Arabic2Han = hanNumeral(num)
End Function