Shape オブジェクト (Publisher)

描画レイヤー上にあるオートシェイプ、フリーフォーム、OLE オブジェクト、ActiveX コントロール、図などのオブジェクトを表します。 Shape オブジェクトは、ページまたは選択範囲内にあるすべての図形を含む Shapes コレクションのメンバーです。

注:

図形を表す 3 つのオブジェクトがあります。

  • Shapes コレクション。ドキュメント上のすべての図形を表します。
  • ShapeRange コレクション。ドキュメント上の図形の指定されたサブセットを表します (たとえば、ShapeRange オブジェクトは、ドキュメント上の図形 1 と 4 を表したり、ドキュメント上で選択したすべての図形を表したりできます)。
  • ドキュメント上の 1 つの図形を表す Shape オブジェクト。

複数の図形を同時に操作する場合、または選択範囲内の図形を操作する場合は、 ShapeRange コレクションを使用します。

注釈

ドキュメント上の既存の図形を返す

単一の Shape オブジェクトを取得するには、Shapes (index) を使用します。index名前またはインデックス番号です。

各図形には、作成時に既定の名前が付けられます。 たとえば、文書に 3 つの異なる図形を追加すると、"Rectangle 2"、"Text Box 3"、"Oval 4" のように名前が付けられます。 図形にわかりやすい名前を付けるには、図形の Name プロパティを設定します。

選択範囲内の図形または図形を返します

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

新しく作成された図形を返す

指定した文書の図形のコレクションに Shape オブジェクトを追加し、新しく作成した図形を表す Shape オブジェクトを返すには、 Shapes コレクションの次のいずれかのメソッドを使用します。

図形のグループを操作する

GroupItems (index) を使用します。index は、グループ内の図形名またはインデックス番号で、グループ化された図形内の 1 つの図形を表す Shape オブジェクトを返します。 ShapeRange.Group メソッドまたは Regroup メソッドを使用して、図形の範囲をグループ化し、新しく形成されたグループを表す 1 つの Shape オブジェクトを返します。 グループが形成されたら、他の図形と同じ方法でグループを操作できます。

図形の書式設定

  • AutoShapeType プロパティを使用して、オートシェイプの種類 (楕円、四角形、吹き出しなど) を指定します。

  • 吹き出しの書式を設定するには、CalloutFormat オブジェクトを返す Callout プロパティを使用します。

  • Fill プロパティを使用して、閉じた図形に塗りつぶしを設定するためのすべてのプロパティとメソッドを持った FillFormat オブジェクトを取得します。

  • Line プロパティを使用して、線と矢印の書式設定をするための LineFormat オブジェクトを取得します。

  • PickUp メソッドと Apply メソッドを使用して、ある図形から別の図形に書式を転送します。

  • SetShapesDefaultProperties メソッドを使用して、ドキュメントの既定の図形の書式設定を設定します。 新しく図形を作成すると、その図形は既定の図形から大部分の属性を継承します。

  • シャドウを書式設定するには、ShadowFormat オブジェクトを返す Shadow プロパティを使用します。

  • WordArt の書式を設定するには、TextEffectFormat オブジェクトを返す TextEffect プロパティを使用します。

  • TextFrame プロパティと Cell.TextRange プロパティを使用して、それぞれ TextFrame オブジェクトと TextRange オブジェクトを取得します。このオブジェクトには、図形と文書内でテキストを挿入および書式設定し、テキスト フレームを一緒にリンクするためのすべてのプロパティとメソッドが含まれています。

  • WrapFormat オブジェクトを返す TextWrap プロパティを使用して、テキストが図形を囲む方法を定義します。

  • ThreeDFormat オブジェクトを返す ThreeD プロパティを使用して、3D 図形を作成します。

  • たとえば、 フリー フォーム、オートシェイプ、OLE オブジェクト、吹き出し、リンクされた図などの図形の種類を指定するには、Type プロパティを使用します。

  • 図形の大きさを指定するには、 Width プロパティと Height プロパティを使用します。

次の使用例は、作業中の文書の最初の図形を左右に反転します。

Sub FlipShape() 
    ActiveDocument.Pages(1).Shapes(1).Flip FlipCmd:=msoFlipHorizontal 
End Sub

次の例では、作業中の文書の Rectangle 1 という名前の図形を水平方向に反転します。

Sub FlipShapeByName() 
    ActiveDocument.Pages(1).Shapes("Rectangle 1") _ 
        .Flip FlipCmd:=msoFlipHorizontal 
End Sub

次の使用例は、選択範囲に少なくとも 1 つの図形が含まれている場合、選択範囲の最初の図形に塗りつぶしを設定します。

Sub FillSelectedShape() 
    Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0) 
End Sub

次の使用例は、選択範囲に少なくとも 1 つの図形が含まれている場合、選択範囲内のすべての図形に塗りつぶしを設定します。

Sub FillAllSelectedShapes() 
    Dim shpShape As Shape 
    For Each
shpShape In Selection.ShapeRange 
       
shpShape.Fill.ForeColor.RGB = RGB(Red:=255, Green:=0, Blue:=0) 
    Next shpShape 
End Sub

次の例では、作業中のドキュメントに四角形を追加します。

Sub AddNewShape() 
    ActiveDocument.Pages(1).Shapes.AddShape Type:=msoShapeRectangle, _ 
        Left:=400, Top:=72, Width:=100, Height:=200 
End Sub

次の使用例は、作業中の文書に 3 つの図形を追加し、図形をグループ化し、グループ内の各図形の塗りつぶしの色を設定します。

Sub WorkWithGroupShapes() 
 
    With ActiveDocument.Pages(1).Shapes 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=100, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=250, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=400, _ 
            Top:=72, Width:=100, Height:=100 
        .SelectAll 
 
        With Selection.ShapeRange 
            .Group 
            .GroupItems(1).Fill.ForeColor _ 
                .RGB = RGB(Red:=255, Green:=0, Blue:=0) 
            .GroupItems(2).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=255, Blue:=0) 
            .GroupItems(3).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=0, Blue:=255) 
        End With 
    End With 
End Sub

次の使用例は、作業中の文書の最初のページにテキスト ボックスを追加し、テキストを追加してテキストの書式を設定します。

Sub CreateNewTextBox() 
    With ActiveDocument.Pages(1).Shapes.AddTextbox( _ 
        Orientation:=pbTextOrientationHorizontal, Left:=100, _ 
        Top:=100, Width:=200, Height:=100).TextFrame.TextRange 
        .Text = "This is a textbox." 
        With .Font 
            .Name = "Stencil" 
            .Bold = msoTrue 
            .Size = 30 
        End With 
    End With 
End Sub

メソッド

プロパティ

関連項目

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

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