
Excel VBAのGetPhoneticメソッドに関して、間違ったコードを紹介しているWebページを見かけたので、記事にさせていただきます。
GetPhoneticの間違ったサンプル
そのページには、以下のようなコードが紹介されていました。
Dim rng As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1")
MsgBox rng.GetPhonetic.Text
このコードでは以下のような実行時エラーが発生します。
実行時エラー '438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。
RangeオブジェクトにはGetPhoneticという名前のメソッドは存在していないため、このような実行時エラーが表示されます。

オブジェクトブラウザーで「G」で始まるメソッドを探しても、上図のとおり「Group」しか見当たりません。「GetPhonetic」はRangeにはありません。
GetPhoneticはApplicationのメソッド
GetPhonecitメソッドは、Rangeオブジェクトではなく、Applicationオブジェクトのメソッドです。

以下のようなコードであれば実行時エラーが発生することなく、フリガナの「イトウ」がメッセージボックスに表示されます。
MsgBox Application.GetPhonetic("伊藤")
End Sub
なお、Application.GetPhoneticはExcel VBAのグローバルメンバーではありませんから、「Application.」を省略することはできません。
GetPhoneticの間違ったサンプルが紹介されている理由
何故「GetPhoneticの間違ったコードが紹介されているのか」ですが、AIに生成させたコードをテストすることなく書き写しているだけなのだろうと、私は推測しています。
例えばChatGPTに「Excel VBAのGetPhoneticメソッドの使い方を教えて」と質問すると、以下のような実行時エラーの発生するサンプルを返してきます。
Sub GetPhoneticExample()
Dim rng As Range
Dim phoneticText As String
' A1セルの範囲を指定
Set rng = Range("A1")
' セル内のふりがなを取得
phoneticText = rng.GetPhonetic
' 結果をメッセージボックスに表示
MsgBox "A1のふりがな: " & phoneticText
End Sub
Claudeの場合は、以下のような動かないコードを生成します。
Sub GetCellPhonetic()
Dim cell As Range
Dim phonetic As String
Set cell = ActiveCell ' アクティブセルを使用
phonetic = cell.GetPhonetic
If phonetic = "" Then
MsgBox "このセルにはフリガナが設定されていません。"
Else
MsgBox "セルの内容: " & cell.Value & vbNewLine & _
"フリガナ: " & phonetic
End If
End Sub
AIが間違った説明文(らしきもの)を生成することはよくありますが、それらを検証することなく書き写しただけなのでしょう。そういった正しくないページが、検索時に上位表示されてしまっているのが、2024年8月の現状です。
間違ったコードを掲載しているそのサイトは、プログラミングスクールのアフィリエイト収入を狙っているようもののようです。
最終更新日時:2024-08-30 19:24
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » Excel VBAのGetPhoneticメソッドはRangeではなくApplicationのメソッドですよ
『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










