全てのふりがなを取得する


※注意:これ、最近はできなくなったようですね。Excelというか、MS-IMEの仕様変更かもしれませんね。せっかくですから、コンテンツは残しておきます。


ワークシート上では、セルに入力した文字のふりがなが自動的に登録されます。

セルのふりがなは[書式]-[ふりがな]-[表示/非表示]で表示されますし、PHONETIC関数で取得することも可能です。

セルを使わないで、VBAでふりがなを取得するには、ApplicationオブジェクトのGetPhoneticメソッドを実行します。

Sub Sample1()
    Dim buf As String
    buf = InputBox("日本語を入力して!")
    MsgBox Application.GetPhonetic(buf)
End Sub

 → 

このGetPhoneticメソッド、あまり知られていませんが、すべての読み(ふりがな)を取得することができます。

使い方はDir関数と同じです。引数を省略すると、前回指定した引数が指定されたものとみなされ、次の読み(ふりがな)を返します。

すべての読み(ふりがな)を返すとGetPhoneticメソッドは空欄を返します。

入力された文字の、すべての読み(ふりがな)を取得するには次のようにします。

Sub Sample2()
    Dim buf As String, Phonetic As String, Ans As String
    buf = InputBox("日本語を入力して!")
    Phonetic = Application.GetPhonetic(buf)
    Do While Phonetic <> ""
        Ans = Ans & vbCrLf & Phonetic
        Phonetic = Application.GetPhonetic()
    Loop
    MsgBox Ans
End Sub

 → 

UserFormで使うと便利かもしれませんね。

Private Sub TextBox1_Change()
    Dim Phonetic As String
    With ComboBox1
        .Clear    ''←これを忘れずに!
        Phonetic = Application.GetPhonetic(TextBox1)
        Do While Phonetic <> ""
            .AddItem Phonetic
            Phonetic = Application.GetPhonetic()
        Loop
    End With
End Sub

テキストボックスのChangeイベントですから、文字を入力するたびに実行されちゃいますが、タイムラグはほとんど感じません。