PowerPointのVBA(Visual Basic for Applications)だけでなく、ExcelやWordのマクロ・VBAについてもご存知の方から
「ExcelもWordもSelectionから書き始められるのに、PowerPointだけはなぜダメなのでしょう?」
といったご質問をいただきました。
ExcelやWordのVBAの経験があって、PowerPointでもVBAを使い始めた方の多くが感じる疑問でもあるはずですので、記事にさせていただきます。
PowerPointのSelectionはグローバルメンバーではない
結論から書くと、以下のとおりです。PowerPoint VBAでは
Selectionプロパティが
グローバルのメンバーではないから
VBAではグローバルメンバーの場合に、上位のオブジェクトへの参照・上位のオブジェクト式を省略して記述することができます。
この文法はExcelでもWordでもPowerPointでも同じです。
で、ExcelでもWordでもSelectionプロパティは、グローバルのメンバーですが、PowerPointの場合、Selectionプロパティはグローバルメンバーではないのです。
ですから、ExcelもWordもSelectionから書き始められるのに、PowerPointの場合はSelectionから書き始められないということになります。(PowerPointでSelectionプロパティを利用する場合、VBAの原則どおり、上位のオブジェクト式から書かなければいけません)
グローバルメンバーをオブジェクトブラウザーで確認する
何がグローバルのメンバーなのかを確認するには、VBE(Visual Basic Editor)に付属する、オブジェクトについて調べるための索引・簡易辞書である、オブジェクトブラウザーを使いましょう。
Excelの場合、下図のように、クラスペインで<グローバル>を選択すると、右側のメンバーペインにSelectionプロパティが表示されます。
Wordの場合も、下図のように、クラスペインで<グローバル>を選択すると、メンバーペインにSelectionプロパティが表示されます。
ですが、PowerPointの場合、下図のように、クラスペインで<グローバル>を選択しても、グローバルメンバーとしてのSelectionプロパティは存在していませんからメンバーペインに表示されません。(もしも存在しているのなら、IsSandboxedプロパティの次に表示されているはずです)
これがPowerPointでは、Excel・Wordと異なってSelectionから書き始めることができない理由です。
- Newer:描画キャンバスを挿入するWordマクロ
- Older:数式を使った条件付き書式を設定するExcelマクロ
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAではなぜSelectionから書き始められないのか