Compartir a través de


Trabajar con formas (objetos de dibujo)

Formas u objetos de dibujo, están representados por tres objetos diferentes: la colección Shapes colección, la colección ShapeRange y el objeto Shape. En general, la colección Shapes se usa para crear formas y cuando se quiere recorrer en iteración todas las formas de una diapositiva, el objeto Shape se usa para modificar una única forma y la colección ShapeRange, para modificar varias formas de la misma manera que se puede trabajar con varias formas seleccionadas en la interfaz de usuario.

Establecer las propiedades de una forma

Muchas propiedades de formato de las formas no se establecen con propiedades que se apliquen directamente a los objetos Shape o ShapeRange. En su lugar, los atributos de forma relacionados se agrupan en objetos secundarios, como el objeto FillFormat, que contiene todas las propiedades relacionadas con el relleno de la forma, o el objeto LinkFormat, que contiene todas las propiedades que son exclusivas de los objetos OLE vinculados. Para establecer las propiedades de una forma, en primer lugar debe devolver el objeto que representa el conjunto de atributos de forma relacionados y, a continuación, establecer las propiedades del objeto devuelto. Por ejemplo, la propiedad Fill se usa para devolver el objeto FillFormat y, a continuación, se establece la propiedad ForeColor del objeto FillFormat para establecer el color de primer plano del relleno de la forma especificada, como se muestra en el ejemplo siguiente.

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Aplicar una propiedad o un método a varias formas al mismo tiempo

En la interfaz de usuario, hay algunas operaciones que pueden realizarse con varias formas seleccionadas; por ejemplo, se pueden seleccionar varias formas y establecer el relleno de cada una al mismo tiempo. Hay otras operaciones que sólo pueden llevarse a cabo con una única forma seleccionada; por ejemplo, sólo se puede modificar el texto de una forma si una única forma está seleccionada.

En Visual Basic existen dos modos de aplicar propiedades y métodos a un grupo de formas. Con estos dos modos es posible realizar cualquier operación que sea posible con una sola forma en un intervalo de formas, independientemente de que se pueda realizar la misma operación en la interfaz de usuario.

  • Si la operación funciona con varias formas seleccionadas en la interfaz de usuario, puede realizar la misma operación en Visual Basic creando una colección ShapeRange que contenga las formas con las que desea trabajar y aplicando las propiedades y los métodos correspondientes directamente a la colección ShapeRange.

  • Si la operación no funciona con varias formas seleccionadas en la interfaz de usuario, puede realizar la operación en Visual Basic recorriendo la colección Shapes o a través de una colección ShapeRange que contenga las formas con las que desee trabajar y aplicando las propiedades y los métodos correspondientes directamente a cada uno de los objetos Shape de la colección.

La mayoría de las propiedades y métodos que se pueden aplicar al objeto Shape y a la colección ShapeRange producen un error si se aplican a cierto tipo de formas. Por ejemplo, la propiedad TextFrame produce un error si se aplica a una forma que no puede contener texto. Si no está seguro de si a las formas de una colección ShapeRange se les puede aplicar una propiedad o un método determinados, no aplique la propiedad o el método a la colección ShapeRange. Si desea aplicar una de estas propiedades o uno de estos métodos a una colección de formas, debe recorrer la colección y comprobar cada una de las formas para asegurarse de que es un tipo de forma adecuado antes de aplicarle la propiedad o el método.

Aplicar una propiedad o un método a una colección ShapeRange

Si es posible realizar una operación con varias formas seleccionadas en la interfaz de usuario al mismo tiempo, puede hacerlo mediante programación si crea una colección ShapeRange y, a continuación, le aplica las propiedades o los métodos correspondientes. En el ejemplo siguiente se crea un intervalo de forma que contiene las autoformas denominadas "Gran estrella" y "Pequeña estrella" en myDocument y se les aplica un relleno degradado.

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

Estas son instrucciones generales del comportamiento de las propiedades y métodos cuando se aplican a una colección ShapeRange.

  • Aplicar un método a una colección equivale a aplicar el método a cada uno de sus objetos Shape.

  • Establecer el valor de una propiedad de la colección es equivalente a establecer el valor de la propiedad de cada forma del intervalo.

  • Una propiedad de la colección que devuelve una constante devuelve el valor de la propiedad de una forma individual de la colección si todas las formas de ésta tienen el mismo valor para dicha propiedad. Si no todas las formas de la colección tienen el mismo valor para la propiedad, devuelve la constante "mixed".

  • Una propiedad de la colección que devuelve un tipo de datos simple, como Long, Single o String, devuelve el valor de la propiedad de una forma si todas las formas de la colección tienen el mismo valor para dicha propiedad.

  • El valor de algunas propiedades puede devolverse o establecerse sólo si hay exactamente una forma en la colección. Si hay varias, se produce un error en tiempo de ejecución. Normalmente ocurre al devolver o establecer propiedades cuando la acción equivalente en la interfaz de usuario sólo puede realizarse con una única forma, por ejemplo, acciones como la modificación del texto de una forma o de los puntos de una forma libre.

Estas instrucciones también pueden aplicarse cuando se establecen propiedades de formas que están agrupadas en objetos secundarios de la colección ShapeRange, como el objeto FillFormat. Si el objeto secundario representa operaciones que pueden realizarse en una selección de varios objetos en la interfaz de usuario, podrá devolver el objeto de una colección ShapeRange y establecer sus propiedades. Por ejemplo, puede utilizar la propiedad Fill para devolver el objeto FillFormat que representa los rellenos de todas las formas de la colección ShapeRange. Al establecer las propiedades del objeto FillFormat se establecen las mismas propiedades para todas las formas de la colección ShapeRange.

Recorrer una colección Shapes o ShapeRange

Aunque no pueda realizar una operación al mismo tiempo con varias formas en la interfaz de usuario, seleccionándolas y usando un comando, puede ejecutar la acción equivalente mediante programación si recorre la colección Shapes o una colección ShapeRange que contenga las formas con las que desee trabajar y si aplica las propiedades y los métodos correspondientes a cada uno de los objetos Shape de la colección. El ejemplo siguiente recorre todas las formas en myDocument y agrega texto a cada autoforma.

Set myDocument = ActivePresentation.Slides(1) 
For Each sh In myDocument.Shapes 
    If sh.Type = msoAutoShape Then 
        sh.TextFrame.TextRange.InsertAfter " (version 1)" 
    End If 
Next

En el siguiente ejemplo, se crea una colección ShapeRange que contiene todas las formas actualmente seleccionadas en la ventana activa y se establece el texto de cada forma de la colección que lo admita.

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Alinear, distribuir y agrupar formas en un intervalo de formas

Use los métodos Align y Distribute para colocar un conjunto de formas tomándolas a ellas mismas como referencia o con respecto al documento que las contiene. Use los métodos Group o Regroup para obtener una única forma agrupada a partir de un conjunto de formas.

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.