1)マクロのたたき台を作る
マクロを一から作るのは大変ですので、まず、自動記録機能を使ってマクロを記述させます。
- Word を起動します。
- 検証用に、“123123123123123123”と入力します。
- 前半は半角、後半は全角文字です。
- [ツール]メニュー ⇒[マクロ]⇒[新しいマクロの記録]をクリックします。
- 【マクロの記録】ダイアログボックスが出ますので、
- 「マクロ名」を“漢数字変換”に変更します。
- [OK]をクリックします。
- 【記録終了】ツールバーが表示されます。
- [編集]メニュー ⇒[置換]をクリックします。
- 【検索と置換】ダイアログボックスが出ますので、
- 「検索する文字列」に、全角の“1”を入力します。
- 「置換後の文字列」に、漢数字の“一”を入力します。
- [すべて置換]をクリックします。
- 置換が実行され確認メッセージが出ますので、[OK]ボタンをクリックします。
- 半角の“1”も、全角の“1”も、漢数字の“一”に変換されます。
- 引き続き、【検索と置換】ダイアログボックスに、
- 「検索する文字列」に、全角の“2”を入力します。
- 「置換後の文字列」に、漢数字の“二”を入力します。
- [すべて置換]をクリックします。
- 置換が実行され確認メッセージが出ますので、[OK]ボタンをクリックします。
- 半角の“2”も、全角の“2”も、漢数字の“二”に変換されます。
- 【検索と置換】ダイアログボックスの[閉じる]ボタンをクリックします。
- 【記録終了】ツールバーの[記録終了]ボタンをクリックします。
2)マクロを見る
- [ツール]メニュー ⇒[マクロ]⇒[マクロ]をクリックします。
- 「マクロ名」の下の下にある“漢数字変換”を選択(クリック)し、
- [編集]ボタンをクリックします。
- 【Microsoft Visual Basic ‥‥】ウィンドウになります。
- “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)のマクロを貼り付けると動くでしょう。但し、全て個人の責任で行ってください。