Com crear i inserir formes a PowerPoint amb VBA?

Fa un parell de dies, volia automatitzar la tasca més aviat mundana de crear algunes diapositives de PowerPoint. Quan automatitzeu PowerPoint, normalment treballeu amb la col·lecció de diapositives i formes. Les diapositives s'explicaran per si mateixes i les formes són pràcticament tota la resta, inclosos quadres de text, botons d'acció, objectes multimèdia, etiquetes, imatges, texts destacats, diagrames de flux, etc. Tot i que mostraré les tècniques amb PowerPoint, algunes de les sintaxis són realment aplicables a Microsoft Word i Excel.

Només per resumir, abans de començar amb el desenvolupament de macros VBA a PowerPoint, heu de tenir la pestanya de desenvolupament activada .

En primer lloc, comencem creant automàticament una presentació amb algunes diapositives tal com es mostra en aquest tutorial: creant una presentació en VBA .

Ara podem començar a treballar amb Shapes. En primer lloc, seguim endavant i obrim l'Editor VBA prement Alt + F11. Si heu seguit el tutorial anterior, hauríeu de tenir el mòdul 1 a la vostra llista de mòduls (com es mostra a continuació)

Treballant amb formes amb VBA

Afegir un quadre de text amb VBA

Començarem afegint un quadre de text vertical a la nostra primera diapositiva de la presentació. Afegiu el codi següent al Mòdul 1, seguiu endavant i premeu el botó Desa (Ctrl+s) i executeu la vostra macro (premeu F5 o premeu Executar formulari de sub/usuari).

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

Tingueu en compte que podeu canviar la mida del vostre quadre de text amb força facilitat amb VBA. En aquest cas, canviarem la mida de la primera forma a la segona diapositiva, no dubteu a modificar-la segons sigui necessari.

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

Efectes de text amb VBA

Suposem ara que volem afegir un quadre de text a totes les diapositives de la presentació, aquesta vegada una mica més atractiu visualment. Per fer-ho, utilitzarem VBA per crear efectes de text personalitzats que podem incrustar en una o més diapositives de la presentació. Primer passarem per les diapositives de la presentació i després afegirem l'efecte de text segons sigui necessari.

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í teniu el resultat ;-):

Com crear i inserir formes a PowerPoint amb VBA?

Tingueu en compte que també podeu utilitzar una marca d'aigua senzilla per aconseguir aquest resultat específic.

Textos destacats de PowerPoint amb VBA

El nostre següent exemple serà afegir textos destacats a la vostra presentació. En aquest exemple afegirem un text destacat a la segona 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

Establiment de propietats per a una forma

Moltes propietats de format de les formes no estan establertes per propietats que s'apliquen directament a l'  objecte Shape  o  ShapeRange  . En canvi, els atributs de forma relacionats s'agrupen sota objectes secundaris, com ara l'  objecte FillFormat  , que conté totes les propietats relacionades amb el farciment de la forma, o l'  objecte LinkFormat  , que conté totes les propietats úniques dels objectes OLE enllaçats. Per establir propietats per a una forma, primer heu de retornar l'objecte que representa el conjunt d'atributs de forma relacionats i després establir les propietats d'aquest objecte retornat. Per exemple, utilitzeu la  propietat Fill  per retornar l'  objecte FillFormat  i, a continuació, establiu la  propietat ForeColor  de l'  objecte FillFormat  per establir el color de primer pla de farciment per a la forma especificada, tal com es mostra a l'exemple següent.

VB

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

Aplicar una propietat o mètode a diverses formes al mateix temps

A la interfície d'usuari, hi ha algunes operacions que podeu realitzar amb diverses formes seleccionades; per exemple, podeu seleccionar diverses formes i establir tots els seus farcits individuals alhora. Hi ha altres operacions que només podeu realitzar amb una única forma seleccionada; per exemple, només podeu editar el text d'una forma si se n'ha seleccionat una única.

A Visual Basic, hi ha dues maneres d'aplicar propietats i mètodes a un conjunt de formes. Aquestes dues maneres us permeten realitzar qualsevol operació que pugueu realitzar en una sola forma en una sèrie de formes, tant si podeu realitzar la mateixa operació com si no a la interfície d'usuari.

  • Si l'operació funciona en diverses formes seleccionades a la interfície d'usuari, podeu realitzar la mateixa operació a Visual Basic construint una  col·lecció ShapeRange  que contingui les formes amb les quals voleu treballar i aplicant les propietats i mètodes adequats directament a la   col·lecció ShapeRange .

  • Si l'operació no funciona en diverses formes seleccionades a la interfície d'usuari, encara podeu realitzar l'operació a Visual Basic fent un bucle per la  col·lecció Shapes  o mitjançant una  col·lecció ShapeRange  que conté les formes amb les quals voleu treballar i aplicant les propietats adequades. i mètodes als  objectes Shape individuals  de la col·lecció.

Moltes propietats i mètodes que s'apliquen a l'  objecte Shape  i a  la col·lecció ShapeRange  fallen si s'apliquen a determinats tipus de formes. Per exemple, la  propietat TextFrame  falla si s'aplica a una forma que no pot contenir text. Si no esteu segur que cada forma d'una  col·lecció ShapeRange  pot tenir una propietat o un mètode determinats aplicats, no apliqueu la propietat o el mètode a la  col·lecció ShapeRange  . Si voleu aplicar una d'aquestes propietats o mètodes a una col·lecció de formes, heu de recórrer la col·lecció i provar cada forma individual per assegurar-vos que és un tipus de forma adequat abans d'aplicar-hi la propietat o el mètode.

Aplicació d'una propietat o mètode a una col·lecció ShapeRange

Si podeu realitzar una operació sobre diverses formes seleccionades a la interfície d'usuari alhora, podeu fer l'equivalent programàtic mitjançant la construcció d'una  col·lecció ShapeRange  i després aplicant-hi les propietats o mètodes adequats. L'exemple següent construeix un rang de formes que conté les formes automàtiques anomenades "Estrella gran" i "Estrella petita" activades i els hi aplica un farciment degradat i un farciment degradat.myDocument

VB

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

Les següents són directrius generals sobre com es comporten les propietats i els mètodes quan s'apliquen a una   col·lecció ShapeRange .

  • Aplicar un mètode a la col·lecció és equivalent a aplicar el mètode a cada  objecte Shape individual  d'aquesta col·lecció.

  • Establir el valor d'una propietat de la col·lecció és equivalent a establir el valor de la propietat de cada forma individual d'aquest rang.

  • Una propietat de la col·lecció que retorna una constant retorna el valor de la propietat per a una forma individual de la col·lecció si totes les formes de la col·lecció tenen el mateix valor per a aquesta propietat. Si no totes les formes de la col·lecció tenen el mateix valor per a la propietat, retorna la constant "mixta".

  • Una propietat de la col·lecció que retorna un tipus de dades simple (com ara  Long ,  Single o  String ) retorna el valor de la propietat per a una forma individual si totes les formes de la col·lecció tenen el mateix valor per a aquesta propietat.

  • El valor d'algunes propietats només es pot tornar o establir si hi ha exactament una forma a la col·lecció. Si hi ha més d'una forma a la col·lecció, es produeix un error en temps d'execució. Aquest és generalment el cas de retornar o establir propietats quan l'acció equivalent a la interfície d'usuari només és possible amb una forma única (accions com ara editar text en una forma o editar els punts d'una forma lliure).

Les directrius anteriors també s'apliquen quan configureu propietats de formes agrupades sota objectes secundaris de la  col·lecció ShapeRange  , com ara l'  objecte FillFormat  . Si l'objecte secundari representa operacions que es poden realitzar en diversos objectes seleccionats a la interfície d'usuari, podreu retornar l'objecte d'una  col·lecció ShapeRange  i establir-ne les propietats. Per exemple, podeu utilitzar la  propietat Fill  per retornar l'  objecte FillFormat  que representa els farcits de totes les formes de la  col·lecció ShapeRange  . L'establiment de les propietats d'aquest  objecte FillFormat  establirà les mateixes propietats per a totes les formes individuals de la  col·lecció ShapeRange  .

Recorre una col·lecció Shapes o ShapeRange

Fins i tot si no podeu realitzar una operació sobre diverses formes a la interfície d'usuari alhora seleccionant-les i després utilitzant una ordre, podeu realitzar l'acció equivalent mitjançant programació fent un bucle per la  col·lecció Shapes  o mitjançant una  col·lecció ShapeRange  que conté les formes que voleu treballar i aplicar les propietats i mètodes adequats als  objectes Shape individuals  de la col·lecció. L'exemple següent fa un bucle a través de totes les formes i afegeix text a cada forma que és una forma automàtica. i afegeix text a cada forma que sigui una forma automàtica.myDocument

VB

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

L'exemple següent construeix  la col·lecció ShapeRange  que conté totes les formes seleccionades actualment a la finestra activa i estableix el text de cada forma de la col·lecció que pot contenir text.

VB

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

Alinear, distribuir i agrupar formes en un rang de formes

Utilitzeu els  mètodes Alinear  i  Distribuir  per posicionar un conjunt de formes entre si o en relació amb el document que les conté. Utilitzeu el  mètode Group  o  Regroup  per formar una única forma agrupada a partir d'un conjunt de formes.

Deixa un comentari

Com solucionar l'error d'Outlook que no pot enviar correu però sí rebre'l

Com solucionar l'error d'Outlook que no pot enviar correu però sí rebre'l

Soluciona Outlook quan pots rebre correu però no enviar-lo. Comprova la safata de sortida, el mode sense connexió, l'inici de sessió, la configuració SMTP, els perfils i els canvis de Microsoft 365.

Plantilla Excel senzilla de seguiment de nòmines quinzenals per a equips petits: una guia pràctica de configuració

Plantilla Excel senzilla de seguiment de nòmines quinzenals per a equips petits: una guia pràctica de configuració

Creeu un seguiment de nòmines quinzenal senzill a Excel per a un equip petit, amb hores, salaris, deduccions, indicadors de revisió, resums i orientació sobre la gestió de registres.

Plantilla de presentació de formació d'incorporació senzilla per a nous empleats: Pla pràctic de 12 diapositives

Plantilla de presentació de formació d'incorporació senzilla per a nous empleats: Pla pràctic de 12 diapositives

Creeu una presentació d'incorporació senzilla per a nous empleats amb una estructura pràctica de 12 diapositives que cobreixi les expectatives del lloc, les eines, la seguretat, les polítiques, la seguretat física i les accions de la primera setmana.

Com exportar els contactes de Salesforce a un format Excel net sense trencar els IDs ni els números de telèfon

Com exportar els contactes de Salesforce a un format Excel net sense trencar els IDs ni els números de telèfon

Exporteu els contactes de Salesforce a Excel de manera neta: creeu l'informe adequat, exporteu només els detalls en CSV, importeu amb Power Query, preserveu els IDs i els zeros inicials, elimineu duplicats de manera segura i verifiqueu el resultat.

Plantilla imprimible d'horari de neteja setmanal per a amfitrions d'Airbnb (Word i PDF)

Plantilla imprimible d'horari de neteja setmanal per a amfitrions d'Airbnb (Word i PDF)

Utilitzeu aquest horari de neteja setmanal imprimible per a amfitrions d'Airbnb per organitzar la neteja de canvi d'hostes, tasques de neteja profunda, reposició, comprovacions de seguretat i impressió de Word a PDF.

Plantilla gratuïta de calendari mensual de factures per a Excel: una configuració pràctica per al 2026

Plantilla gratuïta de calendari mensual de factures per a Excel: una configuració pràctica per al 2026

Organitza les factures mensuals a Excel amb un disseny gratuït de calendari de factures, seguiment de dates de venciment, fórmules d'estat, camps de pagament automàtic i consells pràctics de flux de caixa.

Les fórmules d'Excel no es calculen automàticament? Arregla-ho en 3 passos fàcils

Les fórmules d'Excel no es calculen automàticament? Arregla-ho en 3 passos fàcils

Arregla les fórmules d'Excel que no es calculen automàticament en tres passos: activa el càlcul automàtic, recalcula i repara les cel·les de fórmula.

Plantilla de registre de despeses per a contractistes independents per a freelancers als EUA: què registrar el 2026

Plantilla de registre de despeses per a contractistes independents per a freelancers als EUA: què registrar el 2026

Creeu un registre de despeses pràctic per a freelancers als EUA amb categories compatibles amb l'annex C, camps de rebuts, registre de quilometratge i actualitzacions de les normes de l'IRS per al 2026.

Les millors aplicacions gratuïtes de facturació per a petits negocis de serveis als EUA (2026)

Les millors aplicacions gratuïtes de facturació per a petits negocis de serveis als EUA (2026)

Compareu les millors aplicacions gratuïtes de facturació per a negocis de serveis als EUA el 2026, incloent-hi Zoho Invoice, Wave, Square, PayPal i Invoice Ninja.

Plantilla d'Excel gratuïta per al seguiment de despeses i ingressos de propietats en lloguer: Guia per a principiants

Plantilla d'Excel gratuïta per al seguiment de despeses i ingressos de propietats en lloguer: Guia per a principiants

Utilitzeu una plantilla gratuïta d'Excel per al seguiment de propietats en lloguer per organitzar ingressos, despeses, propietats i flux de caixa mensual. Apreneu què registrar, com configurar-la i els errors a evitar.