Ultimo aggiornamento: giugno 2020
Applicabile a: Office 2019 e versioni precedenti. Solo Windows.
Ecco una domanda di un lettore:
Come parte della mia presentazione del rapporto trimestrale alla direzione, spesso ho bisogno di copiare diverse diapositive di informazioni generali da altre presentazioni. Non è un grosso problema, ma sarebbe un notevole risparmio essere in grado di automatizzare questo esercizio. Qualsiasi aiuto Macro VBA per raggiungere questo obiettivo è apprezzato!
Come hai appena accennato, puoi automatizzare il copia e incolla delle diapositive in PowerPoint utilizzando Visual Basic, Applications Edition. Se hai bisogno di creare diverse presentazioni ogni mese, questa copia/importazione automatizzata di diapositive potrebbe farti risparmiare molto tempo!
PowerPoint VBA per l'aggiunta di diapositive
Andiamo avanti con questo semplice esercizio.
Prima di tutto, assicurati che la tua scheda di sviluppo sia abilitata e visibile. Ecco come farlo .
Presumo che tu abbia già creato una presentazione abilitata per Macro (il tipo di file è .pptm), che hai inserito nella stessa directory della presentazione di origine (che chiamerò source.pptm). Ecco come creare una presentazione PowerPoint con VBA .
Prima di tutto, facciamo un backup di quella presentazione (semplice copia e salva).
Quindi andiamo avanti e inseriamo la seguente Macro in un nuovo modulo VBA nella presentazione di destinazione. Tutti i dettagli su come farlo possono essere trovati nel nostro tutorial VBA di PowerPoint .
Ecco il codice VBA di cui avrai bisogno per copiare e incollare automaticamente le diapositive.
Un paio di ipotesi che ho fatto:
- La presentazione di origine è denominata source.pptm
- Incollerai le diapositive 2-4 dalla presentazione di origine
- Posiziona le diapositive copiate a partire dalla diapositiva 5.
Sub InsertFromOtherPres()
' This short VBA macro copies slides from one presentation and inserts them into another
ActivePresentation.Slides.InsertFromFile FileName:="source.pptm", Index:=1, SlideStart:=2,
SlideEnd:=4
End Sub
Ovviamente, sentiti libero di modificare l'indicizzazione del numero di diapositive nel codice in modo che si adattino alle tue esigenze.
Puoi scorrere diverse presentazioni e inserire diapositive specifiche da ciascuna nel tuo rapporto di gestione.
PowerPoint VBA per la duplicazione di diapositive
Invece di copiare le diapositive in un'altra presentazione, potresti voler clonare una o più diapositive nella tua presentazione:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Quelli erano solo un paio di semplici esempi di automazione di PowerPoint. I lettori in cerca di domande specifiche, non esitate a inviare una richiesta tramite la pagina Contatti.
Spero che aiuti 🙂
Conserva la formattazione durante la copia delle diapositive
Il problema con l'esempio precedente era che la formattazione del tema della presentazione originale non veniva copiata. Supponendo che i 2 fogli avessero una formattazione diversa, ecco cosa sarebbe successo:
Esempio 1
| |
Sub main()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Next i
objPresentation.Close
End Sub
|

Questa la presentazione con la slide che vogliamo copiare:
Risultato:
per superare questo problema potresti usare il codice qui sotto:
![Diapositive da copiare]()
![Risultato]()
| |
Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub
|
Oltre a copiare la diapositiva, il codice sopra copia il design. Se volessi farlo manualmente, copieresti lo slidemaster nella nuova presentazione. Non puoi copiare lo slidemaster utilizzando VBA ma puoi invece impostare la proprietà di progettazione delle diapositive.