¿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.


Cómo configurar Outlook para abrir respuestas y reenvíos en una ventana emergente

Cómo configurar Outlook para abrir respuestas y reenvíos en una ventana emergente

Aprenda cómo cambiar la configuración en Microsoft Outlook para abrir respuestas y reenvíos en una ventana emergente, mejorando su eficiencia al gestionar correos electrónicos.

7 soluciones sencillas para arreglar Fallout 4 que falla en el problema de la PC

7 soluciones sencillas para arreglar Fallout 4 que falla en el problema de la PC

¿Fallout 4 se bloquea al iniciar? ¡¡No es un gran trato!! En este artículo, obtendrá las mejores y más sencillas soluciones que solucionarán el bloqueo de Fallout 4 en la PC.

[CORREGIDO] ¿Cómo arreglar el cambio de avatar de Discord demasiado rápido?

[CORREGIDO] ¿Cómo arreglar el cambio de avatar de Discord demasiado rápido?

Obteniendo Discord, ¿estás cambiando tu avatar demasiado rápido? Resuelve el error de cambio de avatar en Discord con las soluciones enumeradas en este artículo.

Solucione el error ESRV_SVC_QUEENCREEK en Windows 10/11 [3 CORRECCIONES]

Solucione el error ESRV_SVC_QUEENCREEK en Windows 10/11 [3 CORRECCIONES]

Si se pregunta cómo corregir el error ESRV_SVC_QUEENCREEK en Windows 10/11, siga estas correcciones y soluciones efectivas para resolver el problema.

[Mejores soluciones] Arreglar DS4Windows que no detecta el controlador en Windows 10

[Mejores soluciones] Arreglar DS4Windows que no detecta el controlador en Windows 10

¿DS4Windows no detecta el controlador en Windows 10? Aquí hay una solución. Pruebe estas correcciones y comience a usar el controlador con su juego de PC favorito.

[CORREGIDO] Errores de Rise of the Tomb Raider, fallas, caída de FPS, NTDLL, error al iniciar y más

[CORREGIDO] Errores de Rise of the Tomb Raider, fallas, caída de FPS, NTDLL, error al iniciar y más

Obtener errores de Rise of the Tomb Raider como bloqueos, congelamiento, FPS bajo y otros, luego siga las correcciones dadas una por una para jugar el juego fácilmente...

Cómo hacer que la semana del calendario comience con el lunes (EXPLICACIÓN)

Cómo hacer que la semana del calendario comience con el lunes (EXPLICACIÓN)

Para configurar su calendario para que comience la semana con el lunes, debe buscar en la configuración del calendario. La opción suele estar a un par de toques/clics de distancia.

Cómo exportar mensajes de chat de Discord

Cómo exportar mensajes de chat de Discord

Discord ofrece un historial de mensajes ilimitado, pero si desea exportar sus mensajes, deberá utilizar una solución alternativa. Así es cómo.

[Solucionado] El controlador WudfRd no pudo cargar el error 219 en Windows 10

[Solucionado] El controlador WudfRd no pudo cargar el error 219 en Windows 10

Si encuentra que el Driver WudfRd no pudo cargar el error con un ID de evento 219 en Windows 10, siga las correcciones que se proporcionan aquí y resuelva el error 219 de manera efectiva.

Error de instalación detenida en Xbox One [11 formas principales]

Error de instalación detenida en Xbox One [11 formas principales]

Recibir el error de detención de la instalación de Xbox One al intentar instalar juegos, luego sigue las correcciones y resuelve el error de instalación detenida en Xbox One.