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関数
- A列に文字データがあります。
- B列にフリガナデータをセットしていきます。
- Do Loop で繰り返し処理をします。
- 条件としては、A列のデータが空白になるまで。
- Application.GetPhonetic が、漢字からヨミガナを取得する関数です。
- 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列)を、漢字にルビとして組み込みます。
- C列には =LEN(A列)の関数で、1列目の文字数を取得します。
- A列にルビをセットする際、CharactersでルビをセットするA列の文字数を定めておきます。
- 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


コメント