Excel VBA セルの文字列にふりがなを設定する

スポンサーリンク

ふりがなの設定

Excelのワークシート上で入力した文字列には、自動的にふりがなが設定されます。このふりがなは、漢字の氏名などが入力されている列を対象に並べ替えを実行した場合に50音順での並べ替えに利用されます。

しかし、他のアプリケーションで作成したデータをExcelのワークシートに取り込んだ場合は、ふりがなの設定がされていないため50音順で並べ替えることはできません。

VBAでは、ふりがなのないデータに対して、ApplicationオブジェクトのGetPhonetic【ゲットフォネテック】メソッドでふりがなを取得し、RangeオブジェクトのSetPhonetic【セットフォネテック】メソッドでふりがなを設定することができます。

GetPhonetic(ゲットフォネテック)メソッド

GetPhonetic【ゲットフォネテック】メソッドは、セルに入力されている文字列のふりがなを取得します。

表にふりがな列を追加してふりがなをまとめて取得したい場合に利用できます。

GetPhonetic(ゲットフォネテック)メソッドの書式と設定値(引数)の説明

オブジェクト.GetPhonetic( Text )

  • オブジェクト(必須)
    Applicationオブジェクトを指定します。
  • Text【テキスト】(必須)
    ふりがなを取得したい文字列を指定します。

※GetPhoneticメソッドで取得したふりがなは、正しい読みではない場合があるので、読みが正しいか確認をして下さい。


A列に漢字が入力されていてB列にフリガナを取得するコードと解説

Sub フリガナ取得()
Dim i As Long
i = 2
Do Until Cells(i, 1) = ""
Cells(i, 2) = Application.GetPhonetic(Cells(i, 1))
i = i + 1
Loop
End Sub
2行目【Dim i As Long】
繰り返し処理で使用する行番号を格納する、カウンター変数のiを長整数型で宣言します。


3行目【i = 2】
1行目の項目行を除いた行から繰り返しを始めるので、行数を格納するカウンター変数iに2を代入します。


4行目【Do Until Cells(i, 1) = “”】
「~ではない間」繰り返すDo Until【ドゥアンティル】ステートメントでA列のセルが空白になる間繰り返します。


5行目【Cells(i, 2) = Application.GetPhonetic(Cells(i, 1))】
B列のセルにGetPhoneticメソッドで取得したA列の文字列のふりがなを代入します。


6行目【i = i + 1】
カウンタ―変数iに1を加算して次の行の処理をします。

ふりがなをひらがなや半角カタカナで表示する方法

ふりがなは、全角カタカナで取得されますが、取得したフリガナをひらがなや半角カタカナに変換したい場合は
StrConv【ストリングコンバーション】関数を使用して文字の種類を変更します。例として上記のコード例でふりがなをひらがなに変更する場合は5行目を
【Cells(i, 2) = StrConv(Application.GetPhonetic(Cells(i, 1)).vbHiragana)】
に変更します。


SetPhonetic【セットフォネテック】メソッド

SetPhonetic【セットフォネテック】メソッドは
指定したセルの文字列にふりがなを設定します。

ほかのアプリケーションから取り込んだデータに一度にフリガナを設定した場合などに利用できます。

SetPhonetic【セットフォネテック】メソッドの書式と設定値の説明

オブジェクト.SetPhonetic

  • オブジェクト(必須)
    ふりがなを取得したい漢字が入力されている
    セル範囲をRange【レンジ】オブジェクトで指定します。

※SetPhoneticメソッドでは、セルに自動的にふりがなが設定されるため正しい読みでふりがなが設定されない場合があります。読みが正しいか確認をして下さい。


A列の漢字にふりがなを設定するコードと解説

Sub フリガナ設定と表示()
Dim 最終行 As Long
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
Range("A2", "A" & 最終行).SetPhonetic
Range("A2", "A" & 最終行).Phonetics.Visible = True
End Sub
2行目【Dim 最終行 As Long】
A列のデータが入力されている最終行番号を格納する変数「最終行」を長整数型で宣言します。


3行目【最終行 = Cells(Rows.Count, 1).End(xlUp).Row】
Endプロパティを使用して最終セルから上方向に移動して、データの最終行番号を取得し変数「最終行」に代入します。


4行目【Range(“A2”, “A” & 最終行).SetPhonetic】
A列の1行目の項目行を除いたデータが入力されている範囲にたいしてSetPhoneticメソッドでふりがなを設定します。


5行目【Range(“A2”, “A” & 最終行).Phonetics.Visible = True】
ふりがなを設定した範囲に対して、範囲のあるふりがなの集まりを表すPhoneticsコレクションをVisible【ビジブル】プロパティをTrueに指定することにより設定したふりがなを表示します。

※他のアプリケーションから取り込んだデータに50音順で並べ替えするためにふりがなを設定する場合でふりがなの表示が必要ない場合はこのコードは必要ありません。


以上で、セルの文字列にふりがなを設定する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告