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文字単位でのフリガナ処理が可能となり、名簿整理や日本語データの高度な操作に役立ちます。ぜひご活用ください。
