Inserire una forma in un oggetto di PowerPoint da VBA

di Giulio Vito de Musso

scritto il

Potremmo aver bisogno di enfatizzare un particolare di una presentazione di PowerPoint con una freccia o un callout in maniera automatica e controllata da codice VBA. Vedremo oggi il metodo AddShape e il relativo frammento di codice che permette di inserire un oggetto Shape in un altro oggetto di una diapositiva.

Il metodo AddShape è un metodo di tutti gli oggetti Shape di Office. Di conseguenza è disponibile in VBA per tutti gli oggetti Forma raggiungibili dal menu “Inserisci -> Forme”.

AddShape ha il seguente prototipo:

objForma.AddShape(TipoForma, Sinistra, Sopra, Larghezza, Altezza)

dove objForma è un oggetto di tipo Shape.

Vediamo il metodo all’azione: creiamo una nuova presentazione di PowerPoint, clicchiamo “Sviluppo” -> “Visualizza codice” e inseriamo un nuovo modulo (“Inserisci” -> “Modulo”) in cui scriviamo le seguenti righe di codice VBA:


Sub FormaInSlide()
ActivePresentation.Slides(1).Shapes.AddShape msoShapeRoundedRectangularCallout, 50, 50, 100, 50
End Sub

Adesso inseriamo nella diapositiva corrente un pulsante (“Sviluppo” -> “Controlli” -> “Pulsante di comando”) e nel suo codice inseriamo la riga di richiamo alla macro precedentemente creata:

Call FormaInSlide()

Adesso salviamo il tutto nel formato “.PPTM” e, ogni volta che cliccheremo il pulsante, verrà disegnato un callout rettangolare sulla prima slide delle dimensioni specificate.

Una lista completa di forme inseribili tramite il metodo AddShape è disponibile al primo link fornito a inizio post.