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.

Lascia un commento

Modello PowerPoint per Pitch Deck Investitori Minimalista per Startup Tech: Un Blueprint Pratico di 12 Slide

Modello PowerPoint per Pitch Deck Investitori Minimalista per Startup Tech: Un Blueprint Pratico di 12 Slide

Crea un pitch deck per investitori minimalista in PowerPoint con una struttura pratica di 12 slide per startup tech, oltre a linee guida su prove, metriche, affermazioni sulla raccolta fondi e modelli riutilizzabili .potx.

Modello PowerPoint Gratuito per Presentazioni Immobiliari Moderne: Una Guida Pratica per la Proposta al Venditore

Modello PowerPoint Gratuito per Presentazioni Immobiliari Moderne: Una Guida Pratica per la Proposta al Venditore

Crea una presentazione immobiliare moderna in PowerPoint con una guida gratuita alle slide, consigli verificati sui modelli, avvertenze sulle CMA, controlli sui diritti delle foto e tutele per l'Equità Abitativa.

HubSpot Free CRM vs. Zoho CRM: la scelta migliore per gli agenti immobiliari indipendenti nel 2026

HubSpot Free CRM vs. Zoho CRM: la scelta migliore per gli agenti immobiliari indipendenti nel 2026

Confronta HubSpot Free CRM e Zoho CRM per agenti immobiliari indipendenti, inclusi contatti, pipeline, automazione, personalizzazione, pianificazione, limiti e trigger di aggiornamento.

Come risolvere i problemi di audio nelle registrazioni dello schermo di PowerPoint su Windows

Come risolvere i problemi di audio nelle registrazioni dello schermo di PowerPoint su Windows

Risolvi le registrazioni dello schermo di PowerPoint silenziose controllando il controllo Audio, le autorizzazioni del microfono di Windows, il dispositivo di input attivo, le aspettative sull'audio di sistema e gli aggiornamenti di Office.

Modello PDF stampabile per il time blocking giornaliero per professionisti in smart working: una guida per principianti

Modello PDF stampabile per il time blocking giornaliero per professionisti in smart working: una guida per principianti

Utilizza un modello PDF stampabile per il time blocking giornaliero per pianificare ore di lavoro focalizzato, riunioni, pause, compiti amministrativi e buffer realistici senza sovraccaricare la tua giornata.

Modello gratuito di presentazione per report di stato del progetto per team Agile

Modello gratuito di presentazione per report di stato del progetto per team Agile

Crea una presentazione concisa del report di stato del progetto Agile con obiettivi dello sprint, risultati, rischi, indicatori di qualità, decisioni e prossimi passi, senza trasformare le slide in un elenco del backlog.

Modello di tracciamento delle spese per lavoratori autonomi indipendenti per freelance negli USA: riferimento pratico 2026

Modello di tracciamento delle spese per lavoratori autonomi indipendenti per freelance negli USA: riferimento pratico 2026

Traccia le spese aziendali dei freelance, le ricevute, il chilometraggio e le categorie del Schedule C con un riferimento pratico per il tracciamento delle spese 2026 per i contractor negli USA.

Modello PowerPoint gratuito per il rapporto annuale delle organizzazioni non profit: guida pratica alle slide

Modello PowerPoint gratuito per il rapporto annuale delle organizzazioni non profit: guida pratica alle slide

Trova un punto di partenza gratuito per il rapporto annuale PowerPoint delle organizzazioni non profit, oltre a una struttura pratica delle slide, una checklist finanziaria, metriche di impatto, suggerimenti per l'accessibilità e indicazioni per la personalizzazione.

Modello gratuito di calendario mensile per l'organizzazione delle bollette per Excel: un modo semplice per monitorare le scadenze

Modello gratuito di calendario mensile per l'organizzazione delle bollette per Excel: un modo semplice per monitorare le scadenze

Organizza le bollette ricorrenti in Excel con un calendario mensile, un elenco delle bollette, il tracciamento dello stato, i totali SUMIFS e l'evidenziazione delle scadenze. Include un esempio pratico illustrativo.

Modello Excel gratuito per il tracciamento di spese e redditi immobiliari in affitto: una configurazione per principianti

Modello Excel gratuito per il tracciamento di spese e redditi immobiliari in affitto: una configurazione per principianti

Crea un tracker gratuito per redditi e spese immobiliari in affitto su Excel con registri a livello di immobile, categorie compatibili con il Schedule E, tracciamento del flusso di cassa, ricevute e aggiornamenti sulle indennità chilometriche 2026.