Share via


Shapes コレクション オブジェクト

Shapes コレクション オブジェクト

         

複数のオブジェクト
Shapes
複数のオブジェクト

指定したスライドのすべての Shape オブジェクトのコレクションです。各 Shape オブジェクトは、オートシェイプ、フリーフォーム、OLE オブジェクト、図などの描画オブジェクトを表します。

メモ   スライドのオートシェイプだけを処理したり、選択した図形だけを処理するなど、スライドの図形のサブセットを処理する場合は、処理する図形を含む ShapeRange コレクションを作成する必要があります。単一の図形を処理したり、同時に複数の図形を処理する方法については、ここをクリックしてください。

使い方

Shapes コレクションを取得するには、Shapes プロパティを使用します。次の使用例は、現在のプレゼンテーションのすべての図形を選択します。

  ActivePresentation.Slides(1).Shapes.SelectAll

メモ   スライドのすべての図形を同時に処理する (プロパティの削除や設定など) 場合は、引数を指定せずに Range メソッドを使用して、Shapes コレクションのすべての図形を含む ShapeRange オブジェクトを作成し、その ShapeRange オブジェクトに適切なプロパティまたはメソッドを設定します。

新しい図形を作成し、それを Shapes コレクションに追加するには、AddCalloutAddCommentAddConnectorAddCurveAddLabelAddLineAddMediaObjectAddOLEObjectAddPictureAddPlaceholderAddPolylineAddShapeAddTableAddTextboxAddTextEffectAddTitle メソッドのいずれかを使用します。新しいフリーフォームを作成し、それをコレクションに追加するには、BuildFreeform メソッドと ConvertToShape メソッドを一緒に使用します。次の使用例は、作業中のプレゼンテーションに四角形を追加します。

  ActivePresentation.Slides(1).Shapes.AddShape Type:=msoShapeRectangle, _
    Left:=50, Top:=50, Width:=100, Height:=200

単一の Shape オブジェクトを取得するには、Shapes(index) プロパティを使用します。引数 index には、図形の名前またはインデックス番号を指定します。次の使用例は、作業中のプレゼンテーションの図形 1 の既定の影に塗りつぶしを設定します。

  ActivePresentation.Slides(1).Shapes(1).Fill _
    .PresetGradient Style:=msoGradientHorizontal, Variant:=1, _
    PresetGradientType:=msoGradientBrass

Shapes コレクションのサブセットを表す ShapeRange コレクションを取得するには、Shapes.Range(index) プロパティを使用します。引数 index には、図形の名前またはインデックス番号、あるいは図形名またはインデックス番号の配列を指定します。次の使用例は、作業中のプレゼンテーションの図形 1 と 3 に塗りつぶしのパターンを設定します。

  ActivePresentation.Slides(1).Shapes.Range(Array(1, 3)).Fill _
    .Patterned Pattern:=msoPatternHorizontalBrick

プレースホルダを表す Shape オブジェクトを取得するには、Shapes.Placeholders(index) プロパティを使用します。引数 index には、プレースホルダ番号を指定します。指定したスライドにタイトルが含まれている場合に、タイトル プレースホルダを取得するには、Shapes.Placeholders(1) または Shapes.Title を使用します。次の使用例は、作業中のプレゼンテーションにスライドを追加し、次に、タイトルとサブタイトル (サブタイトルは、このレイアウトを持つスライドの 2 番目のプレースホルダです) の両方にテキストを追加します。

  With ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutTitle).Shapes
    .Title.TextFrame.TextRange = "これはタイトル テキストです。"
    .Placeholders(2).TextFrame.TextRange = "これはサブタイトル テキストです。"
End With