Sidst opdateret: juni 2020
Gælder for: Office 2019 og ældre. Kun Windows.
Her er et spørgsmål fra en læser:
Som en del af min kvartalsrapportpræsentation til ledelsen skal jeg ofte kopiere flere generelle informationsdias fra andre præsentationer. Ikke en big deal, men det ville være en betydelig besparelse at kunne automatisere denne øvelse. Enhver VBA-makrohjælp til at opnå det er værdsat!
Som du lige nævnte, kan du automatisere diasene kopiere og indsætte i PowerPoint ved hjælp af Visual Basic for Applications. Hvis du har brug for at oprette flere præsentationer hver måned, kan denne diaskopiering/importautomatisering blive en enorm tidsbesparelse!
PowerPoint VBA til tilføjelse af dias
Lad os komme i gang med denne enkle øvelse.
Først og fremmest skal du sikre dig, at din udviklingsfane er aktiveret og synlig. Sådan gør du det .
Jeg antager, at du allerede har oprettet en makroaktiveret præsentation (filtypen er .pptm), som du har placeret i den samme mappe som din kildepræsentation (som jeg vil referere til som source.pptm). Sådan opretter du en PowerPoint-præsentation med VBA .
Først og fremmest, lad os tage en sikkerhedskopi af den præsentation (simpel kopiering og gem).
Så lad os gå videre og indsætte følgende makro i et nyt VBA-modul i din destinationspræsentation. Alle detaljer om, hvordan du gør det, kan findes i vores PowerPoint VBA tutorial .
Her er den VBA-kode, du skal bruge for automatisk at kopiere og indsætte diasene.
Et par antagelser jeg gjorde:
- Din kildepræsentation hedder source.pptm
- Du indsætter slides 2-4 fra din kildepræsentation
- Du placerer de kopierede dias med startdias 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
Du er naturligvis velkommen til at ændre diasnummerindekseringen i koden, så de passer til dine krav.
Du er i stand til at få det til at gå gennem flere præsentationer og indsætte specifikke dias fra hver i din ledelsesrapport.
PowerPoint VBA til duplikering af dias
I stedet for at kopiere dias til en anden præsentation, vil du måske klone et eller flere dias i din præsentation:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Det var blot et par simple eksempler på PowerPoint-automatisering. Læsere, der søger specifikke spørgsmål, er velkommen til at sende en forespørgsel via kontaktsiden.
Håber det hjælper 🙂
Bevar formatering ved kopiering af dias
Problemet med det forrige eksempel var, at originale præsentationers temaformatering ikke blev kopieret over. Antag, at de 2 ark havde forskellig formatering, dette er, hvad der ville være sket:
Eksempel 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
|

Dette er præsentationen med det dias, vi ønsker at kopiere:
Resultat:
For at løse dette problem kan du bruge koden nedenfor:
![Slides, der skal kopieres]()
![Resultat]()
| |
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
|
Udover at kopiere sliden, kopierer koden ovenfor designet. Hvis du ville gøre dette manuelt, ville du kopiere slidemasteren over til den nye præsentation. Du kan ikke kopiere slidemasteren ved hjælp af VBA, men i stedet kan du indstille designegenskaben for slides.