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
コメント