Excel VBAで漢字のふりがなを自動作成する

Excelで漢字のふりがなを別セルに表示しようとした場合、一般的にはPHONETIC(ふりがな)関数を使用します。この関数は特定のセルに含まれる漢字に対して、ふりがな部分を切り出して指定セルに格納するという便利な関数です。

PHONETIC関数で漢字のセルを引数で指定すると

f:id:kazutaka83:20170605151938p:plain

自動的にふりがなだけ抽出することができるという

f:id:kazutaka83:20170605152044p:plain

Excelは文字入力された時の情報を裏側で持っているのでこのような芸当ができます。ということは、当然入力時に変な変換をしていると思ったようなふりがなを出してくれません。

f:id:kazutaka83:20170605152729p:plain

鈴木さんの名前が間違って出力されました。正しいふりがなは「スズキ ナウシカ」さん。文字入力の際に「いま」「しか」と入れたので、その文字がそのまま反映されてしまってます。余談ですが タナカ ピカチュウくんはGoogle IMEだと変換できました。

対処できない文字

Excel上でIME使って入力すればPHONETIC関数を使用できますが、他のCSVファイル等からコピペで持ってきた文字列は変換できません。この場合はPHONETIC関数を介しても漢字がそのまま出力されてしまいます。このような場合はVBAを使って解決すると良いでしょう。

Function GetPhoneticf(i)
GetPhoneticf = Application.GetPhonetic(i)
End Function

あたらしくGetPhoneticfという関数を作りました。 この関数はApplicationオブジェクトのGetPhoneticメソッドを使って、引数(テキスト)を元にふりがなを取ってきます。

使い方(VBAよくわからない人向け)

対象の文字列が含まれているExcelシートを開きます。表示の [ファイル] から [オプション] を開き、[リボンのユーザ設定]で開発にチェックを入れます。

f:id:kazutaka83:20170605164140p:plain

メニューバーの [開発] から [Visual Basic] を選択してエディタを開きます。[挿入] から [標準モジュール] を選択し、エディタ部分に上の文字を貼り付けます。

f:id:kazutaka83:20170605164548p:plain

Excelの表に戻って一般的な関数を呼び出すような感じでセルに書き込むと、他の標準関数同様に候補として出てきます。

f:id:kazutaka83:20170605164908p:plain

PHONETIC関数だと漢字そのままで出てきていたものが、VBA関数でふりがなに変換できました。変換候補の一番上を拾ってくるので「ワタベ 23」という微妙なふりがなが出てきています。

f:id:kazutaka83:20170605165236p:plain

GetPhoneticの引数を空にしてWHILE回すと他の候補文字も拾えるんですが、そこまで組むよりも、一次処理だけやっといて後は手動でちょこちょこ補正しておくほうが良いですね。ワタナベ、ワタベのどっち採用すべきかとか機械的にはわかんないですし。

ExcelVBA最強リファレンス

ExcelVBA最強リファレンス