Τελευταία ενημέρωση: Ιούνιος 2020
Ισχύει για: Office 2019 και παλαιότερες εκδόσεις. Μόνο Windows.
Εδώ είναι μια ερώτηση από έναν αναγνώστη:
Ως μέρος της τριμηνιαίας παρουσίασης της έκθεσης μου στη διοίκηση, συχνά χρειάζεται να αντιγράψω πολλές γενικές διαφάνειες πληροφοριών από άλλες παρουσιάσεις. Δεν είναι κάτι σπουδαίο, αλλά θα ήταν σημαντική εξοικονόμηση εάν μπορούσαμε να αυτοματοποιήσουμε αυτήν την άσκηση. Οποιαδήποτε βοήθεια μακροεντολής VBA για να επιτευχθεί αυτό εκτιμάται!
Όπως μόλις αναφέρατε, μπορείτε να αυτοματοποιήσετε την αντιγραφή και επικόλληση των διαφανειών στο PowerPoint χρησιμοποιώντας τη Visual Basic for Applications. Εάν χρειάζεται να δημιουργείτε πολλές παρουσιάσεις κάθε μήνα, αυτός ο αυτοματισμός αντιγραφής/εισαγωγής διαφανειών θα μπορούσε να εξοικονομήσει πολύ χρόνο!
PowerPoint VBA για προσθήκη διαφανειών
Ας συνεχίσουμε με αυτήν την απλή άσκηση.
Αρχικά, βεβαιωθείτε ότι η καρτέλα ανάπτυξή σας είναι ενεργοποιημένη και ορατή. Δείτε πώς να το κάνετε αυτό .
Θα υποθέσω ότι έχετε ήδη δημιουργήσει μια παρουσίαση με δυνατότητα Μακροεντολής (ο τύπος αρχείου είναι .pptm), την οποία έχετε τοποθετήσει στον ίδιο κατάλογο με την παρουσίαση της πηγής σας (την οποία θα αναφέρω ως source.pptm). Δείτε πώς μπορείτε να δημιουργήσετε μια παρουσίαση PowerPoint με VBA .
Αρχικά, ας πάρουμε ένα αντίγραφο ασφαλείας αυτής της παρουσίασης (απλή αντιγραφή και αποθήκευση).
Στη συνέχεια, ας προχωρήσουμε και εισάγουμε την ακόλουθη μακροεντολή σε μια νέα μονάδα VBA στην παρουσίαση προορισμού σας. Όλες οι λεπτομέρειες σχετικά με το πώς να το κάνετε αυτό μπορείτε να βρείτε στο σεμινάριο PowerPoint VBA .
Εδώ είναι ο κώδικας VBA που θα χρειαστείτε για να αντιγράψετε και να επικολλήσετε αυτόματα τις διαφάνειες.
Δυο υποθέσεις που έκανα:
- Η παρουσίαση της πηγής σας ονομάζεται source.pptm
- Θα επικολλήσετε διαφάνειες 2-4 από την παρουσίαση πηγής
- Θα τοποθετήσετε τις αντιγραμμένες διαφάνειες ξεκινώντας τη διαφάνεια 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
Προφανώς, μη διστάσετε να αλλάξετε την ευρετηρίαση του αριθμού διαφάνειας στον κώδικα, ώστε να ταιριάζουν στις απαιτήσεις σας.
Μπορείτε να κάνετε επαναφορά σε πολλές παρουσιάσεις και να εισαγάγετε συγκεκριμένες διαφάνειες από κάθε μία στην αναφορά διαχείρισης.
PowerPoint VBA για αντιγραφή διαφανειών
Αντί να αντιγράψετε διαφάνειες σε άλλη παρουσίαση, ίσως θέλετε να κλωνοποιήσετε μία ή περισσότερες διαφάνειες στην παρουσίασή σας:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Αυτά ήταν μόνο μερικά απλά παραδείγματα αυτοματισμού PowerPoint. Οι αναγνώστες που αναζητούν συγκεκριμένες ερωτήσεις, μη διστάσετε να στείλετε μια ερώτηση μέσω της σελίδας Επικοινωνία.
Ελπίζω να βοηθήσει 🙂
Διατήρηση μορφοποίησης κατά την αντιγραφή διαφανειών
Το πρόβλημα με το προηγούμενο παράδειγμα ήταν ότι η αρχική μορφοποίηση θέματος παρουσιάσεων δεν αντιγράφηκε. Ας υποθέσουμε ότι τα 2 φύλλα είχαν διαφορετική μορφοποίηση, αυτό θα είχε συμβεί:
Παράδειγμα 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
|
Αυτή είναι η παρουσίαση με τη διαφάνεια που θέλουμε να αντιγράψουμε:
Αποτέλεσμα:
Για να ξεπεράσετε αυτό το πρόβλημα, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα:
|
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
|
Εκτός από την αντιγραφή της διαφάνειας, ο παραπάνω κώδικας αντιγράφει το σχέδιο. Εάν θέλετε να το κάνετε αυτό με μη αυτόματο τρόπο, θα αντιγράψατε το slidemaster στη νέα παρουσίαση. Δεν μπορείτε να αντιγράψετε το slidemaster χρησιμοποιώντας VBA, αλλά μπορείτε να ορίσετε την ιδιότητα σχεδίασης των διαφανειών.