ShapeRange オブジェクト (Publisher)

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

注:

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

注釈

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

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

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

Align メソッド、Distribute メソッド、または ZOrder メソッドを使用して、図形のセットを互いに相対的に配置するか、ドキュメントを基準にして配置します。

Group メソッド、Regroup メソッド、または Ungroup メソッドを使用して、図形範囲から形成された 1 つの図形を作成して操作します。 GroupItems プロパティは GroupShapes オブジェクトを返します。これは、1 つの図形を形成するためにグループ化されたすべての図形を表します。

作業中の文書に 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 のサポートおよびフィードバックを参照してください。