¿Cómo crear e insertar formas en PowerPoint con VBA?

¿Cómo crear e insertar formas en PowerPoint con VBA?

Hace un par de días, quería automatizar la tarea bastante mundana de crear algunas diapositivas de PowerPoint. Al automatizar PowerPoint, normalmente trabaja con la colección Diapositivas y formas. Las diapositivas se explican por sí mismas, y las formas son prácticamente todo lo demás, incluidos cuadros de texto, botones de acción, objetos multimedia, etiquetas, imágenes, llamadas, diagramas de flujo, etc. Aunque mostraré las técnicas con PowerPoint, parte de la sintaxis es bastante aplicable a Microsoft Word y Excel.

Solo para recapitular, antes de comenzar con el desarrollo de macros de VBA en PowerPoint, debe tener habilitada la pestaña de desarrollo .

En primer lugar, comencemos creando automáticamente una presentación con algunas diapositivas como se muestra en este tutorial: creación de una presentación en VBA .

Ahora podemos empezar a trabajar con Formas. En primer lugar, avancemos y abramos el Editor de VBA presionando Alt+ F11. Si siguió el tutorial anterior, debería tener el módulo 1 en su lista de Módulos (como se muestra a continuación)

Trabajar con formas con VBA

Agregar un cuadro de texto con VBA

Comenzaremos agregando un cuadro de texto vertical a nuestra primera diapositiva de la presentación. Agregue el siguiente código al Módulo 1, luego continúe y presione el botón Guardar (Ctrl+s) y ejecute su macro (presione F5 o presione Ejecutar formulario de sub/usuario).

Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)

    With MySlide.Shapes
        .AddTextbox(Orientation:=msoTextOrientationVertical, _
         Left:=90, Top:=200, Width:=80, _
         Height:=200).TextFrame.TextRange.Text _
        = ("This is my vertical text box")

End With

End Sub

Tenga en cuenta que puede cambiar el tamaño de las dimensiones de su cuadro de texto con bastante facilidad con VBA. En este caso, cambiaremos el tamaño de la primera forma en la segunda diapositiva, siéntase libre de modificar según sea necesario.

Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)

'Add your required dimensions as needed below
   With MyShape
         .Width = 200
         .Height = 35

End With
End Sub

Efectos de texto con VBA

Supongamos ahora que queremos agregar un cuadro de texto a todas las diapositivas de la presentación, esta vez un poco más atractivo visualmente. Para hacer eso, usaremos VBA para crear efectos de texto personalizados que podemos incrustar en una o más diapositivas de la presentación. Primero recorreremos las diapositivas de la presentación y luego agregaremos el efecto de texto según sea necesario.

Sub SetEffects()

Dim i As Integer

For i = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(i) _
    .Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
    "Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next

End Sub

Aquí está el resultado ;-):

¿Cómo crear e insertar formas en PowerPoint con VBA?

Tenga en cuenta que también podría usar una marca de agua simple para lograr este resultado específico.

Llamadas de PowerPoint con VBA

Nuestro próximo ejemplo será agregar llamadas a su presentación. En este ejemplo, agregaremos una llamada a la segunda diapositiva.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Establecer propiedades para una forma

Muchas propiedades de formato de las formas no se establecen mediante propiedades que se aplican directamente al  objeto 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 exclusivas de los objetos OLE vinculados. Para establecer propiedades para una forma, primero debe devolver el objeto que representa el conjunto de atributos de forma relacionados y luego establecer las propiedades de ese objeto devuelto. Por ejemplo, utiliza la  propiedad Fill  para devolver el  objeto FillFormat  y luego establece la  propiedad ForeColor  del  objeto FillFormat  para establecer el color de primer plano de relleno para la forma especificada, como se muestra en el siguiente ejemplo.

V.B.

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

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

En la interfaz de usuario, hay algunas operaciones que puedes realizar con varias formas seleccionadas; por ejemplo, puedes seleccionar varias formas y configurar todos sus rellenos individuales a la vez. Hay otras operaciones que sólo puedes realizar con una única forma seleccionada; por ejemplo, solo puede editar el texto de una forma si se selecciona una sola forma.

En Visual Basic, hay dos formas de aplicar propiedades y métodos a un conjunto de formas. Estas dos formas le permiten realizar cualquier operación que pueda realizar en una sola forma en una variedad de formas, ya sea que pueda realizar o no la misma operación en la interfaz de usuario.

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

  • Si la operación no funciona en varias formas seleccionadas en la interfaz de usuario, aún puede realizar la operación en Visual Basic recorriendo la  colección Shapes  o una  colección ShapeRange  que contenga las formas con las que desea trabajar y aplicando las propiedades apropiadas. y métodos para los  objetos Shape individuales  de la colección.

Muchas propiedades y métodos que se aplican al  objeto Shape  y  a la colección ShapeRange  fallan si se aplican a ciertos tipos de formas. Por ejemplo, la  propiedad TextFrame  falla si se aplica a una forma que no puede contener texto. Si no está seguro de que a cada forma de una  colección ShapeRange  se le pueda aplicar una determinada propiedad o método, no aplique la propiedad o el método a la  colección ShapeRange  . Si desea aplicar una de estas propiedades o métodos a una colección de formas, debe recorrer la colección y probar cada forma individual para asegurarse de que sea un tipo de forma apropiado antes de aplicarle la propiedad o el método.

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

Si puede realizar una operación en varias formas seleccionadas en la interfaz de usuario al mismo tiempo, puede realizar el equivalente programático construyendo una  colección ShapeRange  y luego aplicándole las propiedades o métodos adecuados. El siguiente ejemplo construye un rango de formas que contiene las autoformas denominadas "Estrella grande" y "Estrella pequeña" y les aplica un relleno degradado.myDocument

V.B.

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

Las siguientes son pautas generales sobre cómo se comportan las propiedades y los métodos cuando se aplican a una  colección ShapeRange  .

  • Aplicar un método a la colección equivale a aplicar el método a cada  objeto Shape individual  de esa colección.

  • Establecer el valor de una propiedad de la colección equivale a establecer el valor de la propiedad de cada forma individual en ese rango.

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

  • Una propiedad de la colección que devuelve un tipo de datos simple (como  LongSingleString ) devuelve el valor de la propiedad para una forma individual si todas las formas de la colección tienen el mismo valor para esa propiedad.

  • El valor de algunas propiedades se puede devolver o establecer solo si hay exactamente una forma en la colección. Si hay más de una forma en la colección, se produce un error de tiempo de ejecución. Este suele ser el caso de devolver o configurar propiedades cuando la acción equivalente en la interfaz de usuario solo es posible con una única forma (acciones como editar texto en una forma o editar los puntos de una forma libre).

Las pautas anteriores también se aplican cuando se configuran propiedades de formas agrupadas en objetos secundarios de la  colección ShapeRange  , como el  objeto FillFormat  . Si el objeto secundario representa operaciones que se pueden realizar en varios objetos seleccionados 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  . Establecer las propiedades de este  objeto FillFormat  establecerá las mismas propiedades para todas las formas individuales de la  colección ShapeRange  .

Recorrer una colección Shapes o ShapeRange

Incluso si no puede realizar una operación en varias formas en la interfaz de usuario al mismo tiempo seleccionándolas y luego usando un comando, puede realizar la acción equivalente mediante programación recorriendo la  colección Shapes  o a través de una   colección ShapeRange que contenga las formas que desea trabajar y aplicar las propiedades y métodos apropiados a los  objetos Shape individuales  de la colección. El siguiente ejemplo recorre todas las formas y agrega texto a cada forma que es una autoforma. y agrega texto a cada forma que sea una autoforma.myDocument

V.B.

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

El siguiente ejemplo construye  una colección ShapeRange  que contiene todas las formas seleccionadas actualmente en la ventana activa y establece el texto en cada forma de la colección que puede contener texto.

V.B.

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 rango de formas

Utilice los  métodos Alinear  y  Distribuir  para colocar un conjunto de formas entre sí o con respecto al documento que las contiene. Utilice el  método Grupo  o el  método Reagrupar  para formar una única forma agrupada a partir de un conjunto de formas.


Jengibre 2.7.53.0

Jengibre 2.7.53.0

Ginger es un corrector ortográfico y gramatical gratuito.

Bloques

Bloques

Blocks es un juego intelectual para que los alumnos de 3º de primaria practiquen sus habilidades de detección y visión y está incluido por los profesores en el programa de apoyo a la enseñanza de TI.

Prezi 6.26

Prezi 6.26

Prezi es una aplicación gratuita que te permite crear presentaciones digitales, tanto online como offline.

Matemáticas

Matemáticas

Mathway es una aplicación muy útil que puede ayudarte a resolver todos aquellos problemas matemáticos que requieren una herramienta más compleja que la calculadora integrada en tu dispositivo.

Presentador de Adobe

Presentador de Adobe

Adobe Presenter es un software de aprendizaje electrónico lanzado por Adobe Systems y disponible en la plataforma Microsoft Windows como un complemento de Microsoft PowerPoint.

Tucán 2.3.0

Tucán 2.3.0

Toucan es una plataforma tecnológica educativa. Le permite aprender un nuevo idioma mientras navega por sitios web comunes y cotidianos.

ESetViet 24.2

ESetViet 24.2

eNetViet es una aplicación que ayuda a conectar a los padres con la escuela donde estudian sus hijos para que puedan comprender claramente la situación de aprendizaje actual de sus hijos.

Duolingo

Duolingo

Duolingo - Aprende Idiomas Gratis, o simplemente Duolingo, es un programa educativo que te permite aprender y practicar muchos idiomas diferentes.

Escritura rápida

Escritura rápida

RapidTyping es una herramienta de entrenamiento de teclado conveniente y fácil de usar que lo ayudará a mejorar su velocidad de escritura y reducir los errores ortográficos. Con lecciones organizadas para muchos niveles diferentes, RapidTyping le enseñará cómo escribir o mejorar sus habilidades existentes.

Matemáticas 7.4.10.53

Matemáticas 7.4.10.53

MathType es un software de ecuaciones interactivas del desarrollador Design Science (Dessci), que le permite crear y anotar notaciones matemáticas para procesamiento de textos, presentaciones, aprendizaje electrónico, etc. Este editor también se utiliza para crear documentos TeX, LaTeX y MathML.