形状对象 (发布服务器)

表示对象在绘图层中,如自选图形、 任意多边形、 OLE 对象、 ActiveX 控件或图片。 Shape 对象是 Shapes 集合,其中包含页面或所选内容中的所有形状的成员。

注意

有三个对象表示形状:

  • Shapes 集合,表示文档上的所有形状。
  • ShapeRange 集合表示文档上的形状的指定子集 (例如,ShapeRange 对象可以表示文档上的第一个形状和第四个形状,也可以代表文档) 上所有选定的形状。
  • Shape 对象,表示文档中的单个形状。

如果您需要同时处理几个形状,或处理选定区域中的多个形状,请使用 ShapeRange 集合。

备注

返回文档上的现有形状

使用 Shapes (索引) (其中 index 是名称或索引号)返回单个 Shape 对象。

每个形状在被创建时即获得一个默认名称。 例如,如果在文档中添加三个不同形状,其名称可能是“矩形 2”、“文本框 3”和“椭圆 4”。 若要为形状指定更有意义的名称,请设置形状的 Name 属性。

返回选定内容中的形状

使用 Selection.ShapeRange (索引) (其中 index 是名称或索引号)返回一个 Shape 对象,该对象代表选定内容中的形状。

返回新创建的形状

若要将 Shape 对象添加到指定文档的形状集合并返回代表新创建的形状的 Shape 对象,请使用 Shapes 集合的以下方法之一:

使用一组形状

使用 GroupItems (索引) ,其中 index 是形状名称或组中的索引号,以返回一个 Shape 对象,该对象代表分组形状中的单个形状。 使用 ShapeRange.GroupRegroup 方法对形状区域进行分组,并返回表示新形成的组的单个 Shape 对象。 形成组后,可以采用与处理任何其他形状相同的方式处理组。

设置形状的格式

示例

下面的示例水平翻转活动文档中的第一个形状。

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

假定所选内容包含至少一个形状,则以下示例为所选内容中的第一个形状设置填充效果。

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

假定所选内容至少包含一个形状,则以下示例为该区域的所有形状设置填充效果。

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

本示例向当前出版物添加三个形状,对形状进行分组,并设置组中每个形状的填充颜色。

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 支持和反馈,获取有关如何接收支持和提供反馈的指南。