PowerPoint VBAからノートを操作する場合、
「NotesPage.Shapes.Placeholders(2)」
といったオブジェクトを取得するコード(オブジェクト式)を使います。
この式に疑問を持つ方は少なくないようです。
インストラクターのネタ帳のアクセスログでも
「NotesPage.Shapes.Placeholders(2)」
といった検索キーワードを、結構見かけます。
ノート関連のオブジェクトを確認するサンプルマクロ
「.Placeholders(2)」の「2」が何なのかは、簡単なSubプロシージャを実行してみると、見えてきます。
[表示]タブ-[プレゼンテーションの表示]グループ-[ノート]ボタンから、
ノート表示モードにして、1枚目のスライドがアクティブな状態で、以下のSubプロシージャを実行しましょう。
Dim note As SlideRange
Set note = ActivePresentation.Slides(1).NotesPage Dim shp As Shape
Set shp = note.Shapes.Placeholders(2)
shp.Select
End Sub
サンプルマクロの実行結果
例えば下図のような状態で、
上述のSubプロシージャを実行すると、下図のようにノート部分のプレースホルダーが選択されます。
つづいて、
Set shp = note.Shapes.Placeholders(2)
の部分を、
Set shp = note.Shapes.Placeholders(1)
に変更して再度実行してください。
こんどは下図のように、スライドが画像として表示されているプレースホルダーが選択されます。
この結果を見れば「.Placeholders(2)」の部分は、わかるでしょう。
ノート表示モードにしたときの、上側のプレースホルダーが「Shapes.Placeholders(1)」で、下側(ノート部分)のプレースホルダーが「Shapes.Placeholders(2)」です。
サンプルマクロのオブジェクト式について
このオブジェクト式では、プロパティの名前と返されるオブジェクトの名前が違う点などにも注意が必要です。
SlideオブジェクトのNotesPageプロパティで返されるのは、オブジェクトブラウザーの詳細ペインに「As SlideRange」と表示されているとおり、
SlideRangeオブジェクトです(そもそもPowerPointにNotesPageオブジェクトは存在しません)。
ですから上記のSubプロシージャでは、
Dim note As SlideRange
Set note = ActivePresentation.Slides(1).NotesPage
としています。
またPlaceholdersコレクションオブジェクトのメンバーである単独のオブジェクトは、これもオブジェクトブラウザーを確認すればわかるとおり、PlaceholderオブジェクトではなくShapeオブジェクトです。
ですから上記のSubプロシージャでは、
Dim shp As Shape
Set shp = note.Shapes.Placeholders(2)
としています。
- Newer:VBAで選択図形を最背面に移動する
- Older:For~Nextで書けるループ処理をあえてDo~Loopで書いてみる
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » NotesPage.Shapes.Placeholders(2)とは