Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

「powerpoint マクロ inputbox コンパイルエラー」
「powerpoint マクロ input box コンパイルエラー」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

おそらくExcel VBAを使っているけれど、オブジェクト式の文法を、まだ理解できていない方による検索でしょう。

[スポンサードリンク]

Application.InputBoxメソッドを使ったサンプルマクロ

Excelで以下のマクロを実行すると、インプットボックスが表示され、入力した文字列が、メッセージボックスに表示されます。
Sub Application_InputBoxメソッドのサンプル()
 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 VBAでApplication.InputBoxがコンパイルエラーになる

PowerPointのApplicationオブジェクトに、もしInputBoxメソッドが存在するのならば、Helpプロパティの下にInputBoxが表示されているはずです。ですが、そんなものは存在していないので表示されていません。

勿論、ExcelのVBEでオブジェクトブラウザーを表示して、Applicationオブジェクトを選択すると、下図のようにちゃんとInputBoxメソッドが存在しています。

PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

PowerPoint VBAではApplicationのメンバーにInputBoxは表示されない

自動メンバー表示の様子からも、同じことを観察できます。

ExcelのVBAで「Application.i」まで入力すれば、下図のような表示なります。

PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

ExcelのApplicationオブジェクトに含まれるプロパティやメソッドのうち、「i」ではじまるメンバーが候補として表示され、InputBoxも当然表示されています。

一方、PowerPointのApplicationオブジェクトには、InputBoxという名前のメンバーは存在しませんから、PowerPointのVBEで「Application.i」まで入力しても、下図のような状態にしかなりません。

PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

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です。

Sub Application_InputBoxメソッドを利用するサンプル_CreateObject()
 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でも動きます。
Sub VBA_InputBox関数のサンプル()
 Dim ans As String
 ans = InputBox("文字を入力してください。")
 MsgBox ans
End Sub

VBAのInputBox関数とApplication.InputBoxメソッドの違いについては、以下の記事をご参照ください。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAでApplication.InputBoxがコンパイルエラーになる

「パワーポイントマクロ・PowerPoint VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.