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音順で並べ替えするためにフリガナを設定する場合でフリガナの表示が必要ない場合はこのコードは必要ありません。


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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク