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のメソッドですよ