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.


Zenzero 2.7.53.0

Zenzero 2.7.53.0

Ginger è un correttore ortografico e grammaticale gratuito.

Blocchi

Blocchi

Blocks è un gioco intellettuale rivolto agli studenti delle scuole elementari di terza elementare per esercitare le proprie capacità di rilevamento e vista ed è incluso dagli insegnanti nel programma di supporto all'insegnamento informatico.

Prezio 6.26

Prezio 6.26

Prezi è un'applicazione gratuita che ti consente di creare presentazioni digitali, sia online che offline.

Mathway

Mathway

Mathway è un'app molto utile che può aiutarti a risolvere tutti quei problemi di matematica che richiedono uno strumento più complesso della calcolatrice integrata nel tuo dispositivo.

Presentatore Adobe

Presentatore Adobe

Adobe Presenter è un software di e-Learning rilasciato da Adobe Systems disponibile sulla piattaforma Microsoft Windows come plug-in di Microsoft PowerPoint.

Tucano 2.3.0

Tucano 2.3.0

Toucan è una piattaforma tecnologica educativa. Ti consente di imparare una nuova lingua mentre navighi su siti Web comuni di tutti i giorni.

ENetViet 24.2

ENetViet 24.2

eNetViet è un'applicazione che aiuta a connettere i genitori con la scuola in cui studiano i loro figli in modo che possano comprendere chiaramente l'attuale situazione di apprendimento dei loro figli.

Duolingo

Duolingo

Duolingo - Impara le lingue gratis, o semplicemente Duolingo, è un programma educativo che ti permette di imparare e praticare molte lingue diverse.

Digitazione rapida

Digitazione rapida

RapidTyping è uno strumento di allenamento per la tastiera comodo e facile da usare che ti aiuterà a migliorare la velocità di digitazione e a ridurre gli errori di ortografia. Con lezioni organizzate per molti livelli diversi, RapidTyping ti insegnerà come digitare o migliorare le competenze esistenti.

MathType 7.4.10.53

MathType 7.4.10.53

MathType è un software di equazioni interattive dello sviluppatore Design Science (Dessci), che consente di creare e annotare notazioni matematiche per l'elaborazione di testi, presentazioni, eLearning, ecc. Questo editor viene utilizzato anche per creare documenti TeX, LaTeX e MathML.