【VBA】Excel、PHONETICで取得できないルビを組み込む

やったこと, ノウハウ, パソコン操作, 伝えたいこと, 報告, 知った・見つけた, 考えてみた

Webページから文字列データを取得した場合、PHONETIC関数を利用して「ふりがな」を振ろうとしても、漢字になってしまいます。

下表のように、PHONETIC関数でフリガナを取り出そうとしても、フリガナが漢字になってしまいます。

B列でPHONETIC関数を 利用し、ルビを取得しています。フリガナではなく、漢字が表示されます。


A B
1 商 品名 PHONETIC 関数
2 空心菜 空心菜
3 里芋 里芋
4 大根 大根
5 高菜 高菜
6 唐辛子 唐辛子
7 冬瓜 冬瓜
8 春菊 春菊
9 水菜 水菜
10 白菜 白菜
11 落花生 落花生
12 明日葉 明日葉

VBAを利用して、漢字からフリガナを取り出します。

下表はフリガナをセットする前のエクセルデータです。


A B
1 商 品名 A 列からフリガナを取り出す
2 空心菜
3 里芋
4 大根
5 高菜
6 唐辛子
7 冬瓜
8 春菊
9 水菜
10 白菜
11 落花生
12 明日葉

Application.GetPhonetic関数       

  1. A列に文字データがあります。       
  2. B列にフリガナデータをセットしていきます。       
  3. Do Loop で繰り返し処理をします。       
  4. 条件としては、A列のデータが空白になるまで。       
  5. Application.GetPhonetic が、漢字からヨミガナを取得する関数です。       
  6. A列から取得したヨミガナをB列にセットします。       
        Sub getYomigana()
        Dim i As Long
        i = 2
        
        ' 2行目から、項目が存在する行まで順に処理を行う
            Do While Cells(i, 1) <> ""
        
                '2列目(B列)にA列で取得したフリガナを入力
                Cells(i, 2) = Application.GetPhonetic(Cells(i, 1))
            
                '次の行に移行するために
                i = i + 1
            Loop
        End Sub

VBA実行後


A B
1 商 品名 A 列からフリガナを取り出す
2 空心菜 クウシンサイ
3 里芋 サトイモ
4 大根 ダイコン
5 高菜 タカナ
6 唐辛子 トウガラシ
7 冬瓜 トウガン
8 春菊 シュンギク
9 水菜 ミズナ
10 白菜 ハクサイ
11 落花生 ラッカセイ
12 明日葉 アシタバ

ルビを漢字に組み込む

取り出したフリガナ(B列)を、漢字にルビとして組み込みます。

  1. C列には =LEN(A列)の関数で、1列目の文字数を取得します。
  2. A列にルビをセットする際、CharactersでルビをセットするA列の文字数を定めておきます。
  3. PhoneticCharacters を利用して、B列の文字をA列に組み込みます。
    Sub setRubi()
    Dim i As Long
    i = 2
    
    ' 2行目から、項目が存在する行まで順に処理を行う
        Do While Cells(i, 1) <> ""
    
            '1列目(A列)に、取得したフリガナ(B列)を入力
            '1列目(A列)の文字の長さを3列目(C列)に計算して文字数内にルビをセットする
            Cells(i, 1).Characters(1, Cells(i, 3)) _
              .PhoneticCharacters = Cells(i, 2)
        
            '次の行に移行するために
            i = i + 1
         Loop
    
    End Sub