VBAサンプル集
ユーザー定義関数でフリガナを取得する(GetPhonetic)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2013年5月以前 最終更新日:2020-08-26

ユーザー定義関数でフリガナを取得する(GetPhonetic)


ワークシート関数の、「PHONETIC」では、
他のソフト等からコピペした漢字は取得できません。


そこで、VBAでユーザー定義関数を作成し、読みを取得できるようにします。

Excel VBA 解説


A列はメモ帳よりコピペしました。


B列に、ユーザー定義関数を指定して、振り仮名を取得しています。

C列は、B列の数式の内容です。

以下が、ユーザー定義関数になります。
Function GetPhonetic(セル As Range, _
            Optional ByVal 変換 As Integer = 8, _
            Optional ByVal 全て As Boolean = False)
  Dim strPhonetic As String
  GetPhonetic = StrConv(Application.GetPhonetic(セル), 変換)
  strPhonetic = GetPhonetic
  If 全て = True Then
    Do Until strPhonetic = ""
      strPhonetic = StrConv(Application.GetPhonetic(), 変換)
      If strPhonetic <> "" Then
        GetPhonetic = GetPhonetic & " ; " & strPhonetic
      End If
    Loop
  End If
End Function


標準モジュールに作成して下さい。


説明

Application.GetPhonetic(文字列)
これで文字列に対する、読み仮名を取得します。

Application.GetPhonetic()
のように、文字列を省略すると、次の読み候補が取得されます。
読み候補がなくなると、""が返されます。

StrConv(文字列, 変換方法)
文字列を変換方法で変換します。
変換方法には以下が指定可能です。

1(vbUpperCase):大文字に変換
2(vbLowerCase):小文字に変換
3(vbProperCase):各単語の先頭の文字を大文字に変換します。
4(vbWide):半角文字を全角文字に変換
8(vbNarrow):全角文字を半角文字に変換
16(vbKatakana):ひらがなをカタカナに変換
32(vbHiragana):カタカナをひらがなに変換
64(vbUnicode):Unicodeに変換
128(vbFromUnicode):Unicodeからシステムの既定のコードページに変換

ここでは、普通に考えて、8,16,32、くらいになるでしょう。

Optional ByVal
省略可能な引数になります。
省略した場合は、=の後の値を使用します。

第3引数に、Trueを指定した場合は、全ての読みを、" ; "で結合して表示しています。

全角カナで、読み候補も先頭のみなら

Function GetPhonetic(セル As Range)
  GetPhonetic = Application.GetPhonetic(セル)
End Function


このだけでOKです。


少しVBAが解る方は、

Do~Loop等で処理し、値のみをセルに入れた方が、使い勝手は良いと思います。

例えば以下のように。



Sub SetPhonetic()
  Dim i As Integer
  i = 1 '開始行
  Do Until Cells(i, 1) = "" '空白行になるまで
    Cells(i, 2) = Application.GetPhonetic(Cells(i, 1))
    i = i + 1
  Loop
End Sub


いかがでしょうか。


当然のことながら、漢字の正しい読みなど、PCに解ろうはずもありません。

しかし、現在のPCは結構賢いです(笑)

そこそこ、正しく変換してくれます。

しかし、最後は、人間が目で確認することは、絶対に必要です。

ネットからコピーしたデータや、他ソフトで作成したデータ等から、

読みを取得したい場合等に利用すると、結構手間が省けます。

ユーザー定義関数の実践使用例

ユーザー定義関数の作り方
・簡単な例でユーザー定義関数を作ってみましょう ・この関数の使い方 ・ユーザー定義関数の実践使用例

ユーザー定義関数でハイパーリンクのURLを取得(Hyperlink)
ネットから、何らかの一覧をエクセルにコピペすると、文字列や画像等に、リンクの設定がくっついてきます。URLが表記されていれば良いですが、表示されていない事の方が多いでしょう。そこで、VBAでユーザー定義関数を作成し、URLを取得できるようにします。

スピルに対応したXSPLITユーザー定義関数(文字区切り)
・区切り位置ウィザード ・ワークシートの関数で文字区切りする場合 ・ユーザー定義関数のVBAコード ・XSPLIT関数の使用例 ・ユーザー定義関数の実践使用例

スピルと新関数の練習(XLOOKUP関数、LET関数、VBAまで)
・スピルとXLOOKUP関数の練習問題 ・従来の関数+スピルで数式を作る ・ XLOOKUP関数に書き換える ・LET関数に書き換える ・VBAでユーザー定義関数を作成 ・スピルと新関数の練習のまとめ



同じテーマ「マクロVBAサンプル集」の記事

ユーザー定義関数でフリガナを取得する(GetPhonetic)
ユーザー定義関数でハイパーリンクのURLを取得(Hyperlink)
カラーのコード取得(256RGB⇔16進変換)
時刻になったら音を鳴らして知らせる(OnTime)
指定文字、指定数式でジャンプ機能(Union)
「値の貼り付け」をショートカットに登録(OnKey)
「セルの結合」をショートカットに登録(OnKey)
半角カナのみ全角カナに変換する
計算式の元となる数値定数を消去する(Precedents)
Beep音で音楽(Beep,Sleep)
日付の検索(配列の使用)


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ