【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実行後


AB
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, 3) = Len(Cells(i, 2))
            Cells(i, 1).Characters(1, Cells(i, 3)) _
              .PhoneticCharacters = Cells(i, 2)
        
            '次の行に移行するために
            i = i + 1
         Loop
    
    End Sub

コメント

タイトルとURLをコピーしました