「powerpoint マクロ inputbox コンパイルエラー」
「powerpoint マクロ input box コンパイルエラー」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
おそらくExcel VBAを使っているけれど、オブジェクト式の文法を、まだ理解できていない方による検索でしょう。
Application.InputBoxメソッドを使ったサンプルマクロ
Excelで以下のマクロを実行すると、インプットボックスが表示され、入力した文字列が、メッセージボックスに表示されます。Dim ans As String
ans = Application.InputBox("文字を入力してください。")
MsgBox ans
End Sub
「powerpoint マクロ inputbox コンパイルエラー」
という検索をした方は、おそらく上記のようなマクロを、PowerPointで実行しようとしたのだろうと推測しています。
PowerPointで上記のコードを実行しようとすると、
「コンパイル エラー: メソッドまたはデータ メンバーが見つかりません。」
というエラーが発生します。
オブジェクトブラウザーでApplication.InputBoxメソッドを確認する
なぜ上記のマクロをそのままPowerPointで実行しようとするとエラーになるかというと、PowerPointのApplicationオブジェクトが、InputBoxという名前のメソッドもプロパティも持っていないからです。
下図はPowerPointのVBEでオブジェクトブラウザーを表示して、Applicationオブジェクトを選択したところです。
PowerPointのApplicationオブジェクトに、もしInputBoxメソッドが存在するのならば、Helpプロパティの下にInputBoxが表示されているはずです。ですが、そんなものは存在していないので表示されていません。
勿論、ExcelのVBEでオブジェクトブラウザーを表示して、Applicationオブジェクトを選択すると、下図のようにちゃんとInputBoxメソッドが存在しています。
PowerPoint VBAではApplicationのメンバーにInputBoxは表示されない
自動メンバー表示の様子からも、同じことを観察できます。
ExcelのVBAで「Application.i」まで入力すれば、下図のような表示なります。
ExcelのApplicationオブジェクトに含まれるプロパティやメソッドのうち、「i」ではじまるメンバーが候補として表示され、InputBoxも当然表示されています。
一方、PowerPointのApplicationオブジェクトには、InputBoxという名前のメンバーは存在しませんから、PowerPointのVBEで「Application.i」まで入力しても、下図のような状態にしかなりません。
Applicationオブジェクトが表すものはアプリケーションによって違う
同じ「Application」という単語であるために、オブジェクト式の文法を理解できていないレベルの方は混同してしまいがちですが、アプリケーションによって、Applicationプロパティが返すApplicationオブジェクトは異なります。
Excel VBAのApplicationプロパティが返すのはExcelを表すApplicationオブジェクトで、PowerPoint VBAのApplicationプロパティが返すのはPowerPointを表すApplicationオブジェクトです。
たまたま同じApplicationという名前になっているだけで、中身はまったく違うApplicationオブジェクトですから、Excel VBAのコードをそのままPowerPoint VBAにもってきても動かないほうが普通です。
ExcelのApplicatio.InputBoxメソッドをPowerPointから利用するサンプルマクロ
どうしても、ExcelのApplication.InputBoxメソッドをPowerPointから使いたければ、以下のようなマクロにしてやればOKです。
Dim xls As Object ' Excel.Application
Dim ans As String Set xls = CreateObject("Excel.Application")
ans = xls.Application.InputBox("文字を入力してください。")
MsgBox ans
Set xls = Nothing
End Sub
PowerPointからExcelオブジェクトを利用する他のマクロと同じように、CreateObject関数を利用してやれば、PowerPoint VBAからExcelのApplication.InputBoxメソッドも使えます。(ここまでして、ExcelのApplication.InputBoxメソッドをPowerPointで使う必要があるのか私にはわかりませんけれど...)
VBAのInputBox関数はPowerPointでも当然使える
なお、ここまで書いてきたことは、あくまでも、Application.InputBoxメソッドの話であって、VBAのInputBox関数はPowerPoint VBAでも、何の問題もなく使うことができます。
以下のようなマクロならPowerPointでも動きます。Dim ans As String
ans = InputBox("文字を入力してください。")
MsgBox ans
End Sub
VBAのInputBox関数とApplication.InputBoxメソッドの違いについては、以下の記事をご参照ください。
- Newer:VBAのJoin関数で改行を区切り文字に
- Older:VBAのIf文で改行を含むか判定する-InStr関数
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる