【Word VBA】ワードで数字を漢数字に変換する方法

Wordで数字を漢数字に変換したいときはないでしょうか。

例えば住所の番地や法律などの項番などが該当するかと思います。

けど、そんな中で悩むことは、

・Wordで数字を漢数字に変換したいが方法がわからない
・Word VBAで数字を漢数字に変換したいが複雑でどう組めばよいかわからない

ですよね。

今回はそんなお悩みを解決する
ワードで数字を漢数字に変換する方法について
まとめます!

Wordで数字を漢数字に変換するイメージ

Wordで数字を漢数字に変換するイメージについて説明をします。

適当な半角数字を含む文書を作成します。

Wordの通常機能では数字を漢数字に変換する機能はありませんので、VBAで機能を追加します。

ワンクリックで半角数字部分がすべて漢数字に変換されます。

さらに漢数字の変換パターンも1設定でカンタンに変えることができます。

■拾、百、阡、萬

■一、二、三

それでは早速使ってみましょう!

Wordでサンプルの文書を用意する

半角数字を含む文書を作成し、開きっぱなしにしておきましょう。

Wordで数字を漢数字に変換するVBA

Wordで数字を漢数字に変換するVBAを準備します。

サンプルコードは以下の通りです。

Sub 数字を漢数字に変換する()

  Dim strChangeWord As String
  Dim strBuf As String
  Dim objWord As Range
  Dim objParagraph As Paragraph
  
  '漢数字変換パターン(書式)を指定します。
  '十、百、千、万⇒1
  '拾、百、阡、萬⇒2
  '一、二、三 ⇒3
  Const intshoshikiNum = 1

'RegExpをオブジェクトにセットします。
Set objRegExp = CreateObject("VBScript.RegExp")

'全体の範囲から1行づつ文字列を読み込みます。
For Each objParagraph In ActiveDocument.Range.Paragraphs

    'Range.Textで1行分読み取った文字列を変数に格納します。
    strBuf = objParagraph.Range.Text
    
    '検索条件を指定します。"([0-9]+)"は数字の塊の指定条件となります。
    objRegExp.Pattern = "([0-9]+)"

    '検索を実行し一致する限り処理を繰り返します。
    For Each objMatchWord In objRegExp.Execute(strBuf)
        
        '検索結果の値を漢数字へ変換し、変数へ代入します。
        strChangeWord = Evaluate("NUMBERSTRING(" & objMatchWord.Value & "," & intshoshikiNum & ")")

        '変換後の文字列と変換前の文字列を置き換え変数へ格納します。※1行に複数条件に該当する文字列があれば順に置換していきます。
        strBuf = objRegExp.Replace(strBuf, strChangeWord)
    
    Next
   
    '作業bufが変更されていたら、1行をまるまる交換します。
    If strBuf <> objParagraph.Range.Text Then
        objParagraph.Range.Text = strBuf
    End If

  Next
  
  MsgBox "数字を漢数字に変換しました!"
  
  Set objParagraph = Nothing
  Set objMatchWord = Nothing
  Set objRegExp = Nothing
End Sub

VBAの設定をする

Wordで数字を漢数字に変換するVBAに設定をしていきましょう。

設定箇所は以下の通りです。

漢数字変換パターン(書式)を指定します。

Const intshoshikiNum = 1

書式パターンにしたい数字を指定してください。

十、百、千、万⇒1
拾、百、阡、萬⇒2
一、二、三 ⇒3

参照設定を追加する

今回はExce lの関数「NUMBERSTRING」を使って漢数字変換をしていますので、VBE(Visual Basic Editor)を開き、「ツール」>「参照設定」から
「Microsoft Excel **.* Object Library」にチェックを入れOKをクリックして実装してください。

VBAを実装し実行する

VBAを実装し実行してみましょう。

実装方法は「VBAを実装する」をご覧ください。

実装できたらマクロから「数字を漢数字に変換する」を見つけ実行します。

数字を漢数字に変換しました!」が表示されたら、
処理結果を確認しましょう。

はい、数字の箇所が漢数字に変わっていますね!

漢数字変換パターンを変更する

サンプルでは1番指定の「十、百、千、万」の変換パターンでしたが、2番の「拾、百、阡、萬」3番の「一、二、三」に変換してみましょう。

はい、こちらも問題なく変換できましたね!

■拾、百、阡、萬

■一、二、三

VBAの説明

Wordで数字を漢数字に変換するVBAについて説明をします。

今回はExce lの関数「NUMBERSTRING」を使って漢数字変換をしています。NUMBERSTRING関数とは、数値を漢数字の文字列に変換する関数です。
NUMBERSTRING関数の式は以下の通りです。

NUMBERSTRING(値, 変換パターン)

値に漢数字へ変換したい数字を、書式に下記変換パターンを指定します。

十、百、千、万⇒1
拾、百、阡、萬⇒2
一、二、三 ⇒3

Evaluateメソッドを利用し、Excelの関数として、NUMBERSTRING関数を呼び出します。

strChangeWord = Evaluate(“NUMBERSTRING(” & objMatchWord.Value & “,” & intshoshikiNum & “)”)

タカヒロ
タカヒロ
WordからExcelの関数を呼び出す方法はなかなかレアですが、
Excel関数の数分、機能の幅がぐっと広がりますね!

RegExpをオブジェクトにセットします。

Set objRegExp = CreateObject(“VBScript.RegExp”)

全体の範囲から1行づつ文字列を読み込みます。

For Each objParagraph In ActiveDocument.Range.Paragraphs

Range.Textで1行分読み取った文字列を変数に格納します。

strBuf = objParagraph.Range.Text

検索条件を指定します。”([0-9]+)”は数字の塊の指定条件となります。

objRegExp.Pattern = “([0-9]+)”

タカヒロ
タカヒロ
Wordでワイルドカードを使うと正規表現風の指定ですと、この数字の塊の指定はできなかったため、
“VBScript.RegExp”を代わりにつかった形となります。

検索を実行し一致する限り処理を繰り返します。

For Each objMatchWord In objRegExp.Execute(strBuf)

変換後の文字列と変換前の文字列を置き換え変数へ格納します。※1行に複数条件に該当する文字列があれば順に置換していきます。

strBuf = objRegExp.Replace(strBuf, strChangeWord)

作業bufが変更されていたら、1行をまるまる交換します。

If strBuf <> objParagraph.Range.Text Then
objParagraph.Range.Text = strBuf
End If

VBAを実装する

実装手順は以下の通りです。

①Wordを新規に開き、「開発」タブをクリックし、

VisualBasic」をクリックします。

もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインの「Nomal」を右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

④「ツール」>「参照設定」から
「Microsoft Excel **.* Object Library」にチェックを入れOKをクリックして実装します。

こちらで完了です。

VBAを実行する

早速VBAの実行をしてみましょう。

①「開発」タブの「マクロ」をクリックし今回実装したマクロ明を選択し、「実行」をクリックします。

さいごに

いかがでしょうか。

今回は、
ワードで数字を漢数字に変換する方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

 
タカヒロ  
Excelの基礎がスルスル入ってくるAmazonランク1位の優良Excel本です。
 
この基礎本と応用技が多いエク短と組み合わせれば、短時間で誰よりもExcelが使いこなせるかと思います。
 
2022/1/21(金)23: 59までAmazon限定の「厳選ショートカットキー」DL特典アリです。 >詳細を見てみる 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です