PowerPoint VBAの、SlideRangeオブジェクト・SliedeRangeプロパティについて解説をしました。
PowerPointのマクロを作りはじめた方の中には、ShapeRangeについても疑問を持つ方は多いはずです。
このサイト・インストラクターのネタ帳のアクセスログを眺めていても、
「powerpoint vba shaperange」
「パワーポイント マクロ shaperange」
といった検索からのアクセスがあることに気づきます。
PowerPoint VBAの、ShapeRangeについてまとめておきます。
ShapeRangeオブジェクトとShapeRangeプロパティ
オブジェクトブラウザで、PowerPointライブラリに限定して「ShapeRange」を完全一致で検索すると、下図のように2つのShapeRangeが見つかります。
ShapeRangeオブジェクトと、SelectionオブジェクトのShapeRangeプロパティです。
SelectionオブジェクトのShapeRangeプロパティの詳細ペインを確認すると、
ShapeRangeオブジェクトを返すプロパティであることがわかります。
ですから、「ShapeRangeとは」という疑問に対しては、まずは、ShapeRangeオブジェクトが何なのかを理解することが必要ということになります。
ShapesオブジェクトとShapeRangeオブジェクト
ShapeRangeオブジェクトについて理解するには、Shapesオブジェクトと比較しておくことが必須です。
Shapesオブジェクトは、指定されたスライドのすべてのShapeを表す、コレクションオブジェクトです。
例えば、スライドを1枚だけ選択しておいて、
MsgBox ActiveWindow.Selection.SlideRange _
.Shapes.Count
というコードを実行すると、そのスライドに含まれるShapeの数がメッセージボックスに表示されます。
これに対してShapeRangeオブジェクトのほうは、選択されているShepeだけを表すコレクションオブジェクトです。
例えば、Shapeをいくつか選択しておいて、
MsgBox ActiveWindow.Selection _
.ShapeRange.Count
というコードを実行すると、選択されているShapeの数がメッセージボックスに表示されます。
すべてのShapeを表す(Shapes)か、選ばれているShapeだけを表す(ShapeRange)か、という違いです。
ShapesもShpaeRangeもShapeを返す
ShapeRangeも個々のオブジェクトはShapeですから、Shapesの引数に数値を指定するとShapeオブジェクトを取得できるのと同じように、ShapeRangeも引数に数値を指定するとShapeオブジェクトを取得できます。
例えば、
ActiveWindow.Selection.SlideRange _
.Shapes(1).Select
というコードを実行すると、アクティブなスライド上の1つ目のShapeが選択できます。
例えば、複数のShapeが選択されている状態で、
ActiveWindow.Selection _
.ShapeRange(1).Select
というコードを実行すると、選択されているShapeの1つ目だけが選択できます。
ShapesとShapeRangeの違い
ShapesもShpaRangeも、Shapeを個別オブジェクトとして持っているコレクションオブジェクトであるという点では同じです。
大きく違うのは、それぞれが、どのオブジェクトに含まれているのかです。
Shapesオブジェクトを返すShapesプロパティは、複数のオブジェクトのプロパティになっています。
オブジェクトブラウザでShapesをPowerPointライブラリに限定して、完全一致で検索すると、上図のとおり、
Chart
CustomLayout
Master
Slide
SlideRange
という5つのオブジェクトにShpaesプロパティが存在していることがわかります。(PowerPoint 2003の場合は、Master・Slide・SlideRangeオブジェクトにのみ存在しています)
この中のSlideRangeオブジェクトのShapesプロパティを利用してShapeオブジェクトを取得したのが、先にあげた、
ActiveWindow.Selection.SlideRange. _
Shapes(1).Select
というコードです。
これに対して、ShapeRangeオブジェクトを返すShapeRangeプロパティを持っているのは、Selectionオブジェクトだけです。
プロパティを使ってオブジェクトを取得するオブジェクト式は
上位のオブジェクト式.プロパティ
と書きます。
Shapesプロパティを使ってShapesコレクションオブジェクトやShapeオブジェクトを取得するときは、
上位のオブジェクト式.Shapes
上位のオブジェクト式.Shapes(引数)
と記述することになります。
Shapesプロパティは、多くのオブジェクトが持っているので、「上位のオブジェクト式.」の書き方がたくさんあることになります。
ShapeRangeプロパティを使ってShapeRangeコレクションオブジェクトやShapeオブジェクトを取得するときとは、
上位のオブジェクト式.ShapeRange
上位のオブジェクト式.ShapeRange(引数)
と記述します。
ShapeRangeプロパティはSelectionオブジェクトにだけ含まれているので、「上位のオブジェクト式.」の最後の部分は、必ず「.Select.」になっているはずです。
まとめ
まとめると、
- ShapeRangeは選択されているShapeだけを表すコレクションオブジェクト
- Shapesはスライド上のすべてのShapeを表すところがShapeRangeと異なる
- ShapeRangeプロパティの前は必ず「Selection.」
- Shapesプロパティの前はいくつかのパターンがある
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » PowerPoint VBAのShapeRangeとは