Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » PowerPoint VBAのShapeRangeとは

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

PowerPoint VBAのShapeRangeとは

PowerPoint VBAの、SlideRangeオブジェクト・SliedeRangeプロパティについて解説をしました。

PowerPointのマクロを作りはじめた方の中には、ShapeRangeについても疑問を持つ方は多いはずです。

[スポンサードリンク]

このサイト・インストラクターのネタ帳のアクセスログを眺めていても、
「powerpoint vba shaperange」
「パワーポイント マクロ shaperange」
といった検索からのアクセスがあることに気づきます。

PowerPoint VBAの、ShapeRangeについてまとめておきます。

ShapeRangeオブジェクトとShapeRangeプロパティ

オブジェクトブラウザで、PowerPointライブラリに限定して「ShapeRange」を完全一致で検索すると、下図のように2つのShapeRangeが見つかります。

PowerPoint VBAのShapeRangeとは

ShapeRangeオブジェクトと、SelectionオブジェクトのShapeRangeプロパティです。

SelectionオブジェクトのShapeRangeプロパティの詳細ペインを確認すると、

PowerPoint VBAの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プロパティは、複数のオブジェクトのプロパティになっています。

PowerPoint VBAのShapeRangeとは

オブジェクトブラウザで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オブジェクトだけです。

PowerPoint VBAのShapeRangeとは

プロパティを使ってオブジェクトを取得するオブジェクト式は
 上位のオブジェクト式.プロパティ
と書きます。

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とは

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


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

.