Come creare e inserire forme in PowerPoint con VBA?

Come creare e inserire forme in PowerPoint con VBA?

Un paio di giorni fa, volevo automatizzare il compito piuttosto banale di creare alcune diapositive di PowerPoint. Quando si automatizza PowerPoint, in genere si lavora con la raccolta Presentazioni e forme. Presentazioni è piuttosto autoesplicativo e le forme sono praticamente tutto il resto, inclusi caselle di testo, pulsanti di azione, oggetti multimediali, etichette, immagini, callout, diagrammi di flusso e così via. Anche se mostrerò le tecniche con PowerPoint, parte della sintassi è in realtà abbastanza applicabile a Microsoft Word ed Excel.

Solo per ricapitolare, prima di iniziare con lo sviluppo di macro VBA in PowerPoint è necessario che la scheda di sviluppo sia abilitata .

Innanzitutto, iniziamo creando automaticamente una presentazione con alcune diapositive come mostrato in questo tutorial: creazione di una presentazione in VBA .

Ora possiamo iniziare a lavorare con Shapes. Prima di tutto, andiamo avanti e apriamo l'editor VBA premendo Alt + F11. Se hai seguito il tutorial precedente, dovresti avere il modulo 1 nell'elenco dei moduli (come mostrato di seguito)

Lavorare con le forme con VBA

Aggiunta di una casella di testo con VBA

Inizieremo aggiungendo una casella di testo verticale alla nostra prima diapositiva nella presentazione. Aggiungi il codice seguente a Module1, quindi vai avanti e premi il pulsante Salva (Ctrl+s) ed Esegui la tua macro (premi F5 o premi Esegui modulo utente/sottoposto).

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

Nota che puoi ridimensionare le dimensioni della tua casella di testo abbastanza facilmente con VBA. In questo caso ridimensioneremo la prima forma nella seconda diapositiva, sentiti libero di modificare secondo necessità.

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

Effetti di testo con VBA

Assumiamo ora di voler aggiungere una casella di testo a tutte le diapositive della presentazione, questa volta un po' più visivamente accattivante. Per fare ciò utilizzeremo VBA per creare effetti di testo personalizzati che siamo in grado di incorporare in una o più diapositive della presentazione. Per prima cosa andremo a scorrere le diapositive della presentazione e quindi aggiungeremo l'effetto testo secondo necessità.

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

Ecco il risultato ;-):

Come creare e inserire forme in PowerPoint con VBA?

Nota che potresti anche usare una semplice filigrana per ottenere questo risultato specifico.

Callout PowerPoint con VBA

Il nostro prossimo esempio sarà l'aggiunta di callout alla tua presentazione. In questo esempio aggiungeremo un callout alla seconda 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

Impostazione delle proprietà per una forma

Molte proprietà di formattazione delle forme non vengono impostate dalle proprietà che si applicano direttamente all'oggetto  Shape  o  ShapeRange  . Gli attributi di forma correlati vengono invece raggruppati in oggetti secondari, ad esempio l'  oggetto FillFormat  , che contiene tutte le proprietà correlate al riempimento della forma, o l'  oggetto LinkFormat  , che contiene tutte le proprietà univoche degli oggetti OLE collegati. Per impostare le proprietà per una forma, è necessario prima restituire l'oggetto che rappresenta l'insieme di attributi della forma correlati e quindi impostare le proprietà dell'oggetto restituito. Ad esempio, utilizzi la  proprietà Fill  per restituire l'  oggetto FillFormat  , quindi imposti la  proprietà ForeColor  dell'oggetto  FillFormat  per impostare il colore di riempimento in primo piano per la forma specificata, come illustrato nell'esempio seguente.

V.B

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

Applicazione di una proprietà o di un metodo a più forme contemporaneamente

Nell'interfaccia utente sono presenti alcune operazioni che è possibile eseguire con diverse forme selezionate; ad esempio, puoi selezionare più forme e impostare tutti i riempimenti individuali contemporaneamente. Esistono altre operazioni che puoi eseguire solo con una singola forma selezionata; ad esempio, puoi modificare il testo in una forma solo se è selezionata una singola forma.

In Visual Basic esistono due modi per applicare proprietà e metodi a un insieme di forme. Questi due modi consentono di eseguire qualsiasi operazione eseguibile su una singola forma in un intervallo di forme, indipendentemente dal fatto che sia possibile eseguire o meno la stessa operazione nell'interfaccia utente.

  • Se l'operazione funziona su più forme selezionate nell'interfaccia utente, è possibile eseguire la stessa operazione in Visual Basic costruendo una  raccolta ShapeRange  che contiene le forme con cui si desidera lavorare e applicando le proprietà e i metodi appropriati direttamente alla   raccolta ShapeRange .

  • Se l'operazione non funziona su più forme selezionate nell'interfaccia utente, è comunque possibile eseguire l'operazione in Visual Basic scorrendo la  raccolta Shapes  o una  raccolta ShapeRange  che contiene le forme con cui si desidera lavorare e applicando le proprietà appropriate e metodi ai singoli  oggetti Shape  nella raccolta.

Molte proprietà e metodi applicabili all'oggetto  Shape  e  alla raccolta ShapeRange  falliscono se applicati a determinati tipi di forme. Ad esempio, la  proprietà TextFrame  ha esito negativo se applicata a una forma che non può contenere testo. Se non sei sicuro che a ogni forma in una  raccolta ShapeRange  possa essere applicata una determinata proprietà o metodo, non applicare la proprietà o il metodo alla  raccolta ShapeRange  . Se si desidera applicare una di queste proprietà o metodi a una raccolta di forme, è necessario scorrere la raccolta e testare ogni singola forma per assicurarsi che sia un tipo di forma appropriato prima di applicarvi la proprietà o il metodo.

Applicazione di una proprietà o di un metodo a una raccolta ShapeRange

Se è possibile eseguire contemporaneamente un'operazione su più forme selezionate nell'interfaccia utente, è possibile eseguire l'equivalente a livello di codice costruendo una  raccolta ShapeRange  e quindi applicandovi le proprietà o i metodi appropriati. Nell'esempio seguente viene costruito un intervallo di forme che contiene le forme denominate "Big Star" e "Little Star" e applica loro un riempimento sfumato.myDocument

V.B

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

Di seguito sono riportate linee guida generali sul comportamento di proprietà e metodi quando vengono applicati a una   raccolta ShapeRange .

  • Applicare un metodo alla raccolta equivale ad applicare il metodo a ogni singolo  oggetto Shape  in quella raccolta.

  • Impostare il valore di una proprietà della collezione equivale a impostare il valore della proprietà di ogni singola forma presente in quell'intervallo.

  • Una proprietà della raccolta che restituisce una costante restituisce il valore della proprietà per una singola forma nella raccolta se tutte le forme nella raccolta hanno lo stesso valore per quella proprietà. Se non tutte le forme nella raccolta hanno lo stesso valore per la proprietà, restituisce la costante "mista".

  • Una proprietà della raccolta che restituisce un tipo di dati semplice (come  LongSingleString ) restituisce il valore della proprietà per una singola forma se tutte le forme nella raccolta hanno lo stesso valore per quella proprietà.

  • Il valore di alcune proprietà può essere restituito o impostato solo se nella raccolta è presente esattamente una forma. Se nell'insieme è presente più di una forma, si verifica un errore di runtime. Questo è generalmente il caso della restituzione o dell'impostazione di proprietà quando l'azione equivalente nell'interfaccia utente è possibile solo con una singola forma (azioni come la modifica del testo in una forma o la modifica dei punti di una forma libera).

Le linee guida precedenti si applicano anche quando si impostano le proprietà delle forme raggruppate in oggetti secondari della  raccolta ShapeRange  , ad esempio l'  oggetto FillFormat  . Se l'oggetto secondario rappresenta operazioni che possono essere eseguite su più oggetti selezionati nell'interfaccia utente, sarai in grado di restituire l'oggetto da una  raccolta ShapeRange  e impostarne le proprietà. Ad esempio, puoi utilizzare la  proprietà Fill  per restituire l'  oggetto FillFormat  che rappresenta i riempimenti di tutte le forme nella  raccolta ShapeRange  . L'impostazione delle proprietà di questo  oggetto FillFormat  imposterà le stesse proprietà per tutte le singole forme nella  raccolta ShapeRange  .

Ciclo attraverso una raccolta Shapes o ShapeRange

Anche se non è possibile eseguire contemporaneamente un'operazione su più forme nell'interfaccia utente selezionandole e quindi utilizzando un comando, è possibile eseguire l'azione equivalente a livello di codice scorrendo la  raccolta Shapes  o una   raccolta ShapeRange che contiene le forme desiderate. con cui si desidera lavorare e applicare le proprietà e i metodi appropriati ai singoli  oggetti Shape  nella raccolta. L'esempio seguente esegue il ciclo di tutte le forme e aggiunge testo a ogni forma che è una forma. e aggiunge testo a ogni forma che è una forma automatica.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

L'esempio seguente crea  una raccolta ShapeRange  che contiene tutte le forme attualmente selezionate nella finestra attiva e imposta il testo in ogni forma della raccolta che può contenere testo.

V.B

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

Allineamento, distribuzione e raggruppamento di forme in un intervallo di forme

Utilizzare i  metodi Allinea  e  Distribuisci  per posizionare un insieme di forme l'una rispetto all'altra o rispetto al documento che le contiene. Utilizza il  metodo Raggruppa  o  Raggruppa  per formare un'unica forma raggruppata da un insieme di forme.


[RISOLTO] Il tuo computer è offline, accedi con lultima password Windows 10

[RISOLTO] Il tuo computer è offline, accedi con lultima password Windows 10

Se stai riscontrando l

Come raggruppare le cose in Presentazioni Google

Come raggruppare le cose in Presentazioni Google

Vuoi spostare gli elementi in Presentazioni Google senza perdere la loro posizione relativa? Scopri come raggrupparli in pochi semplici passi.

Come cancellare la cronologia delle connessioni desktop remoto

Come cancellare la cronologia delle connessioni desktop remoto

Scopri come cancellare la cronologia delle connessioni desktop remoto in modo semplice e veloce seguendo i passaggi indicati.

Come attivare o disattivare Caps Lock su Chromebook

Come attivare o disattivare Caps Lock su Chromebook

Scopri come attivare o disattivare Caps Lock su Chromebook in modo semplice e veloce. Segui i nostri passaggi per personalizzare la tua esperienza di digitazione.

Come regolare i rientri di elenchi puntati o numerici in Microsoft Word

Come regolare i rientri di elenchi puntati o numerici in Microsoft Word

Scopri come regolare i rientri degli elenchi in Microsoft Word per migliorare la formattazione del tuo documento.

HDMI non funziona su Windows 11? 11 correzioni

HDMI non funziona su Windows 11? 11 correzioni

Stai riscontrando problemi con la connettività HDMI su Windows 11? Scopri come risolvere i problemi di HDMI con 11 semplici correzioni.

[RISOLTO] Valheim continua a bloccarsi, bloccarsi, schermo nero, non si avviano problemi

[RISOLTO] Valheim continua a bloccarsi, bloccarsi, schermo nero, non si avviano problemi

Scopri come risolvere Valheim continua a bloccarsi, bloccarsi, schermo nero e problemi di avvio. Segui queste soluzioni efficaci per giocare senza interruzioni.

Come abilitare e personalizzare il lettore immersivo in Microsoft Word

Come abilitare e personalizzare il lettore immersivo in Microsoft Word

Scopri come abilitare e personalizzare il lettore immersivo in Microsoft Word per una lettura più accurata, aiuto con la pronuncia delle parole e per ascoltare il documento letto ad alta voce.

Come riprodurre file musicali direttamente da Google Drive

Come riprodurre file musicali direttamente da Google Drive

Scopri come riprodurre i tuoi file musicali archiviati su Google Drive senza doverli scaricare. Utilizza Music Player per Google Drive per un

[RISOLTO] Errore imprevisto di Windows 10 Defender e Microsoft Defender Threat Service ha interrotto lerrore

[RISOLTO] Errore imprevisto di Windows 10 Defender e Microsoft Defender Threat Service ha interrotto lerrore

Scopri come risolvere l