Objeto Shape (Publicador)

Representa un objeto en la capa de dibujo, como una autoforma, una forma libre, objeto OLE, control ActiveX o imagen. El objeto Shape es un miembro de la colección Shapes, que incluye todas las formas de una página o en una selección.

Nota:

Hay tres objetos que representan formas:

  • La colección Shapes , que representa todas las formas de un documento.
  • La colección ShapeRange , que representa un subconjunto especificado de las formas de un documento (por ejemplo, un objeto ShapeRange podría representar formas una y cuatro en el documento, o podría representar todas las formas seleccionadas en el documento).
  • Objeto Shape , que representa una sola forma en un documento.

Si desea trabajar con varias formas al mismo tiempo o con formas dentro de la selección, use una colección ShapeRange.

Comentarios

Devolver una forma existente en un documento

Use Shapes (index), donde index es el nombre o el número de índice, para devolver un único objeto Shape .

A cada forma se la asigna un nombre predeterminado cuando se crea. Por ejemplo, si agrega tres formas distintas a un documento con los nombres siguientes: Rectángulo 2, Cuadro de texto 3 y Elipse 4. Para asignar un nombre más significativo a una forma, establezca la propiedad Name de la forma.

Devolver una forma o formas dentro de una selección

Use Selection.ShapeRange (index), donde index es el nombre o el número de índice, para devolver un objeto Shape que representa una forma dentro de una selección.

Devolver una forma recién creada

Para agregar un objeto Shape a la colección de formas del documento especificado y devolver un objeto Shape que represente la forma recién creada, use uno de los métodos siguientes de la colección Shapes :

Trabajar con un grupo de formas

Use GroupItems (index), donde index es el nombre de la forma o el número de índice dentro del grupo, para devolver un objeto Shape que representa una sola forma en una forma agrupada. Use el método ShapeRange.Group o Regroup para agrupar un intervalo de formas y devolver un único objeto Shape que represente el grupo recién formado. Una vez formado un grupo, puede trabajar con el grupo de la misma manera que trabaja con cualquier otra forma.

Dar formato a una forma

  • Utilice la propiedad AutoShapeType para especificar el tipo de Autoforma: oval, rectángulo o globo, por ejemplo.

  • Utilice la propiedad Callout , que devuelve el objeto CalloutFormat , para dar formato a las llamadas de línea.

  • Utilice la propiedad Fill para devolver el objeto FillFormat, que contiene todas las propiedades y los métodos para aplicar formato al relleno de una forma cerrada.

  • Utilice la propiedad Line para devolver un objeto LineFormat, que contiene propiedades y métodos para dar formato a líneas y flechas.

  • Use los métodos PickUp y Apply para transferir el formato de una forma a otra.

  • Use el método SetShapesDefaultProperties para establecer el formato de la forma predeterminada del documento. Las nuevas formas heredan muchos de sus atributos de la forma predeterminada.

  • Utilice la propiedad Shadow , que devuelve el objeto ShadowFormat , para dar formato a una sombra.

  • Use la propiedad TextEffect , que devuelve el objeto TextEffectFormat , para dar formato a WordArt.

  • Use las propiedades TextFrame y Cell.TextRange para devolver los objetos TextFrame y TextRange , respectivamente, que contienen todas las propiedades y métodos para insertar y dar formato al texto dentro de formas y publicaciones y vincular los marcos de texto entre sí.

  • Utilice la propiedad TextWrap , que devuelve el objeto WrapFormat , para definir cómo se ajusta el texto alrededor de las formas.

  • Utilice la propiedad ThreeD , que devuelve el objeto ThreeDFormat , para crear formas 3D.

  • Utilice la propiedad Type para especificar el tipo de forma: forma libre, autoforma, objeto OLE, llamada o imagen vinculada, por ejemplo.

  • Utilice las propiedades Width y Height para especificar el tamaño de la forma.

Ejemplo:

En el ejemplo siguiente se voltea horizontalmente la forma uno del documento activo.

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

En el ejemplo siguiente se voltea horizontalmente la forma denominada Rectangle 1 en el documento activo.

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

En el ejemplo siguiente se establece el relleno de la primera forma de la selección, suponiendo que la selección contiene una forma por lo menos.

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

En el siguiente ejemplo, se establece el relleno de todas las formas de la selección, suponiendo que la selección contiene una forma por lo menos.

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

En el ejemplo siguiente se agrega un rectángulo al documento activo.

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

En este ejemplo se agregan tres formas a la publicación activa, se agrupan las formas y se establece el color de relleno para cada una de las formas del grupo.

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

En el ejemplo siguiente se agrega un cuadro de texto a la primera página de la publicación activa y, a continuación, se le agrega texto y se da formato al texto.

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

Métodos

Propiedades

Consulte también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.