Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » NotesPage.Shapes.Placeholders(2)とは

NotesPage.Shapes.Placeholders(2)とは

対象:PowerPoint 2010, PowerPoint 2013, Windows版PowerPoint 2016

PowerPoint VBAからノートを操作する場合、
「NotesPage.Shapes.Placeholders(2)」
といったオブジェクトを取得するコード(オブジェクト式)を使います。

この式に疑問を持つ方は少なくないようです。

[スポンサードリンク]

インストラクターのネタ帳のアクセスログでも
「NotesPage.Shapes.Placeholders(2)」
といった検索キーワードを、結構見かけます。

ノート関連のオブジェクトを確認するサンプルマクロ

「.Placeholders(2)」の「2」が何なのかは、簡単なSubプロシージャを実行してみると、見えてきます。

[表示]タブ-[プレゼンテーションの表示]グループ-[ノート]ボタンから、

ノート表示モードにして、1枚目のスライドがアクティブな状態で、以下のSubプロシージャを実行しましょう。

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)
としています。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ノート » NotesPage.Shapes.Placeholders(2)とは

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

.