ShapeRange オブジェクト (発行元)

文書の図形の集合である図形範囲を表します。 図形範囲には、文書内の 1 つの図形を含めたり、文書内のすべての図形を含めることができます。 文書内のすべての図形、または選択範囲内のすべての図形から選択した、目的の図形を含めると、図形範囲を構築できます。 たとえば、ドキュメント、ドキュメントで選択したすべての図形、または文書内のすべてのフリー フォーム図形の最初の 3 つの図形を含む ShapeRange コレクションを作成できます。

注:

[!メモ] 図形 オブジェクトを使用して行うことがでくほとんどの操作を行うことも 1 つだけ図形を含む ShapeRange オブジェクトで。 操作によっては、複数の図形を含む ShapeRange オブジェクトに対して実行すると、エラーが発生することがあります。

注釈

文書内の図形のセットを表す ShapeRange コレクションを返すには、Shapes.Range (インデックス) を使用します。ここで、index は図形のインデックス番号、または図形のインデックス番号を含む配列です。 Visual Basic の 配列 関数を使用して、インデックス番号の配列を作成します。

Shapes.Range メソッドを使用すると任意の数の図形を返すことができますが、コレクションの 1 つのメンバーのみを返す場合は、Item メソッドを使用する方が簡単です。 たとえば、 図形 (1) は、 Shapes.Range (1) よりも簡単です。

Selection.ShapeRange (index) を使用します。ここで、index は図形のインデックス番号であり、選択範囲内の図形を表す Shape オブジェクトを返します。

Align メソッド、Distribute メソッド、または ZOrder メソッドを使用して、一連の図形を相対的またはドキュメントに対して相対的に配置します。

図形範囲から形成された単一の図形を作成および操作するには、[ グループ化 ] 方法、[ グループ化 ] 方法、または [グループ解除] 方法を使用します。 GroupItems プロパティは、1 つの図形にグループ化されたすべての図形を表す GroupShapes オブジェクトを返します

作業中の文書に 3 つの図形の塗りつぶしのパターンを設定する例を次にします。

Sub ChangeFillPattern() 
    ActiveDocument.Pages(1).Shapes.Range(Array(1, 2, 3)) _ 
        .Fill.PresetGradient Style:=msoGradientDiagonalDown, _ 
        Variant:=1, PresetGradientType:=msoGradientHorizon 
End Sub

次の使用例は、作業中の文書の最初のページの最初の 2 つの図形を選択し、選択範囲の最初の図形に塗りつぶしを設定します。

Sub ChangeFillForShapeRange() 
    ActiveDocument.Pages(1).Shapes.Range(Array(1, 2)).Select 
    Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0) 
End Sub

この例では、アクティブな文書の最初のページにあるすべての図形を選択し、範囲内の 2 番目の図形にテキストを追加して書式設定します。

Sub SelectShapesOnPageOne() 
    ActiveDocument.Pages(1).Shapes.Range.Select 
    With Selection.ShapeRange(2).TextFrame.TextRange 
        .Text = "Shape Number 2" 
        .ParagraphFormat.Alignment = pbParagraphAlignmentCenter 
        .Font.Size = 25 
    End With 
End Sub

この例は、図形範囲を指定し、、左揃えにし、ページ上の図形を垂直方向に整列します。

Sub AlignDistributeShapes() 
    Dim rngShapes As ShapeRange 
    Set rngShapes = ActiveDocument.Pages(1).Shapes.Range 
 
    With rngShapes 
        .Align AlignCmd:=msoAlignLefts, RelativeTo:=msoFalse 
        .Distribute DistributeCmd:=msoDistributeVertically, RelativeTo:=msoTrue 
    End With 
End Sub

この例は、図形範囲を指定し、、左揃えにし、ページ上の図形を垂直方向に整列します。

Sub GroupShapes() 
    Dim rngShapes As ShapeRange 
    Set rngShapes = ActiveDocument.Pages(1).Shapes.Range 
    rngShapes.Group 
 
    rngShapes(1).Fill.OneColorGradient _ 
        Style:=msoGradientFromCenter, _ 
        Variant:=2, Degree:=1 
End Sub

メソッド

プロパティ

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。