まりふのひと

算用数字を漢数字に変換するマクロを作成する

1)マクロのたたき台を作る

マクロを一から作るのは大変ですので、まず、自動記録機能を使ってマクロを記述させます。

  1. Word を起動します。
  2. 検証用に、“123123123123123123”と入力します。
    • 前半は半角、後半は全角文字です。
  3. [ツール]メニュー ⇒[マクロ]⇒[新しいマクロの記録]をクリックします。
  4. 【マクロの記録】ダイアログボックスが出ますので、
    • 「マクロ名」を“漢数字変換”に変更します。
    • [OK]をクリックします。
  5. 【記録終了】ツールバーが表示されます。
  6. [編集]メニュー ⇒[置換]をクリックします。
  7. 【検索と置換】ダイアログボックスが出ますので、
    • 「検索する文字列」に、全角の“1”を入力します。
    • 「置換後の文字列」に、漢数字の“一”を入力します。
    • [すべて置換]をクリックします。
  8. 置換が実行され確認メッセージが出ますので、[OK]ボタンをクリックします。
    • 半角の“1”も、全角の“1”も、漢数字の“一”に変換されます。
  9. 引き続き、【検索と置換】ダイアログボックスに、
    • 「検索する文字列」に、全角の“2”を入力します。
    • 「置換後の文字列」に、漢数字の“二”を入力します。
    • [すべて置換]をクリックします。
  10. 置換が実行され確認メッセージが出ますので、[OK]ボタンをクリックします。
    • 半角の“2”も、全角の“2”も、漢数字の“二”に変換されます。
  11. 【検索と置換】ダイアログボックスの[閉じる]ボタンをクリックします。
  12. 【記録終了】ツールバーの[記録終了]ボタンをクリックします。
2)マクロを見る
  1. [ツール]メニュー ⇒[マクロ]⇒[マクロ]をクリックします。
  2. 「マクロ名」の下の下にある“漢数字変換”を選択(クリック)し、
  3. [編集]ボタンをクリックします。
  4. Microsoft Visual Basic ‥‥】ウィンドウになります。
  5. “General”の下にあるのがマクロ(コード)です。
Option Explicit
Sub 漢数字変換()
'
' 漢数字変換 Macro
' 記録日 2007/01/01 記録者 所有者名
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "1"
        .Replacement.Text = "一"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "2"
        .Replacement.Text = "二"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
3)完成したマクロ

上の例では、1と2しか漢数字に変換していません。引き続き3,4‥‥と0まで行えばマクロは完成なのですが、長〜くなる(処理時間は、今回のケースではむしろ早いでしょう)ので管理上の問題があります。そこで、もっと簡潔にしたのが下記(WordMacro.zip)です。

Option Explicit
Const MYObjName = "WordMacro"

'概要:算用数字を漢数字に変換する。
'履歴:H19.01.02    初版
Sub 漢数字変換()
On Error GoTo Err_漢数字変換
Dim mbTitle As String
Dim i As Long
Dim strText As String, strReplacement As String
Dim tblText As Variant, tblReplacement As Variant
        
    mbTitle = MYObjName & "/漢数字変換"
    tblText = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
    tblReplacement = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九")
    
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    For i = 0 To UBound(tblText)
        strText = tblText(i)
        strReplacement = tblReplacement(i)
        GoSub Replace_漢数字変換
    Next
    
Exit_漢数字変換:
    Exit Sub
    
Replace_漢数字変換:
    With Selection.Find
        .Text = strText
        .Replacement.Text = strReplacement
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Return
    
Err_漢数字変換:
    MsgBox "漢数字変換に失敗しました。" & vbCrLf & vbCrLf _
            & Err.Number & "/" & Err.Description, vbCritical, mbTitle
    Resume Exit_漢数字変換
End Sub

2)のマクロを全て削除し、3)のマクロを貼り付けると動くでしょう。但し、全て個人の責任で行ってください。