【VBA応用】漢字ごとに個別のフリガナを取得する方法|Phoneticsオブジェクトの使い方

Excel VBAでは、セルに入力された日本語に対して、「全体のフリガナ(読み)」だけでなく、漢字ごとに分割されたフリガナを個別に取得することも可能です。

本記事では、Phonetics オブジェクトを用いて、各漢字に対応するフリガナを1文字ずつ取り出す方法について、具体的なコードとともに解説いたします。


目次

漢字ごとのフリガナとは?

たとえば「森林太郎」という名前があるとします。
この文字列の全体的なフリガナは「モリハヤシタロウ」ですが、漢字ごとの対応は以下のとおりです。

漢字フリガナ
モリ
ハヤシ
ロウ

このように、1文字ごとの読みが取れると、名簿のフリガナ列を細かく分けたい場面や音声出力システムの前処理などで非常に便利です。


フリガナを1文字ずつ取得するVBAコード

以下は、セル B2 に入力された文字列の各漢字に対応するフリガナを、C2 以降のセルに1つずつ出力する処理です。

Sub 個別フリガナ取得()

    Dim フリガナ単位 As Phonetics
    Dim 対象セル As Range
    Dim 出力先 As Range
    
    Set 対象セル = Range("B2")
    Set 出力先 = Range("C2")

    For Each フリガナ単位 In 対象セル.Phonetics
        出力先.Value = フリガナ単位.Text
        Set 出力先 = 出力先.Offset(1)
    Next フリガナ単位
    
    ' 参考として、全体のフリガナも出力
    出力先.Value = "全体:" & 対象セル.Phonetic.Text

End Sub

実行結果のイメージ

B列(元の文字列)C列(個別フリガナ)
森林太郎モリ
ハヤシ
ロウ
全体:モリハヤシタロウ

注意点

  • Phonetics は、セルに対してフリガナ情報が含まれていない場合、空になることがあります。あらかじめ日本語で入力された文字列であることを確認してください。
  • フリガナが自動生成されたものか手動入力されたものかによって、内容に差異が出る場合があります。
  • 対象となるセルに「漢字とひらがなの混在」や「記号」がある場合、取得内容が意図と異なることがあります。

まとめ

処理内容コード例
セル内の各文字に対応するフリガナ取得For Each Phonetics In 対象セル.Phonetics
各フリガナを別セルに出力出力先.Value = フリガナ単位.Text
全体のフリガナを取得対象セル.Phonetic.Text

Excel VBAの Phonetics オブジェクトを活用すれば、1文字単位でのフリガナ処理が可能となり、名簿整理や日本語データの高度な操作に役立ちます。ぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次