Dette er en komplet guide til automatisering af PowerPoint ved hjælp af VBA (Visual Basic for Applications) makroer. Nedenfor finder du mange nyttige eksempler.
VBA PDF (gratis downloads)
Download vores gratis Microsoft PowerPoint VBA -selvstudium! Eller VBA -øvelser til andre Office -programmer!
Hent
Selvstudium i PowerPoint VBA (makroer)
Gem som makroaktiveret præsentation
Præsentationen med VBA-kode skal være "Gemt som" PowerPoint-makroaktiveret præsentation (*.pptm)
Aktiver fanen 'Udvikler' på båndet
Du skal aktivere fanen Udvikler på båndet, før du opretter VBA -kode. For at gøre det skal du vælge Arkiv -> Indstillinger, klik derefter på 'Tilpas bånd', og marker afkrydsningsfeltet ud for fanen 'Udvikler' i den højre rude.
Opret PowerPoint -makro
Dette er et enkelt eksempel på en PowerPoint VBA -makro:
1234567891011 | Under GemPresentationAsPDF ()Dim pptName som strengDim PDFnavn som streng'Gem PowerPoint som PDFpptName = ActivePresentation.FullName'Erstat PowerPoint -filtypenavnet i navnet til PDFPDFName = Venstre (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Afslut Sub |
Den gemmer den aktive præsentation som en PDF. Hver kodelinje gør følgende:
- Opretter variabler til PowerPoint -navn og PDF -navn
- Tildeler det aktive præsentationsnavn til variablen pptName
- Opretter det fulde PDF -navn
- Gemmer præsentationen som en PDF
PowerPoint -applikation
Når VBA -kode kører inden for en PowerPoint -præsentation, er PowerPoint -applikationen standardprogrammet, og det kan manipuleres uden eksplicit reference. Opret en ny præsentation
For at oprette en præsentation skal du bruge tilføjelsesmetoden til PowerPoint -applikationen.
123 | Application.Presentations.Add'eller uden eksplicit henvisningPræsentationer. Tilføj |
Åbn en ny præsentation
For at åbne en ny og tom præsentation skal du bruge tilføjelsesmetoden Tilføj til Application.Presentations
1 | Præsentationer. Tilføj |
Åbn en eksisterende præsentation
For at åbne en præsentation, som du allerede har oprettet, skal du bruge Open -metoden til Application.Presentations -samlingen
1 | Presentations.Open ("Min præsentation.pptx") |
Koden ovenfor forudsætter, at præsentationen er i samme bibliotek som PowerPoint -præsentationen, der indeholder koden.
Åbn og tildel en variabel
Du bør tildele den præsentation, du åbner, en variabel, så du kan manipulere den i henhold til dine krav.
12 | Dim ppt som præsentationIndstil ppt = Presentations.Open ("Min præsentation.pptx") |
Se Aktiv præsentation
Brug referencen ActivePrentation til at manipulere præsentationen, der er aktiv i GUI'en, når VBA -koden udføres.
12 | 'Udskriv navnet på ActivePresentation i det øjeblikkelige vindueDebug.Print ActivePresentation.Name |
Gem nuværende præsentation
Udtalelsen herunder gemmer den aktive præsentation, hvis den blev gemt før. Hvis det ikke er gemt, bliver du bedt om dialogboksen 'Gem som'.
1 | ActivePresentation.Save |
Luk nuværende præsentation
Udtalelsen herunder lukker den aktive præsentation, selvom den ikke blev gemt efter den sidste redigering.
1 | ActivePresentation.Close |
Nyttige referencer
Tildel eksisterende præsentation (ved navn) til variabel
12 | Dim myPresentationByName som præsentationIndstil myPresentationByName = Application.Presentations ("Min præsentation") |
Tildel aktiv dias til variabel
12 | Dæmp strømSlide as SlideIndstil currentSlide = Application.ActiveWindow.View.Slide |
Tildel dias efter indeks til variabel
12 | Dim mySlide som diasIndstil mySlide = ActivePresentation.Slides (11) |
Tæl antal dias
12 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Få diasindeksnummer for nuværende dias
12 | Dim currentSlideIndex som diascurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Tilføj et tomt dias til slutningen af diasshowet
1234567 | Dim slideCount As LongDæmp nySlide som diasslideCount = ActivePresentation.Slides.CountIndstil newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'eller som ppLayoutBlank = 12Indstil newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Tilføj et dias efter det aktuelle dias
12345 | Dim newSlide As SlideDim currentSlideIndex som heltalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexIndstil newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Slet et dias
1234 | Dim currentSlideIndex som heltalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex) .Slet |
Gå til et bestemt dias
12 | 'Dette fører dig til dias nummer 4Application.ActiveWindow.View.GotoSlide (4) |
Flyt dias
Du kan flytte et dias fra den gamle position til den nye position
123456 | 'Gå fra dias 3 til første diasDim oldPosition som heltal, dæmp newPosition som heltaloldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Sløjfe gennem alle dias
Du kan gøre noget med hvert dias eller gå gennem alle dias for at finde et par dias og gøre noget ved at bruge koden;
123456 | Dim mySlide som diasFor hver mySlide In ActivePresentation.Slides'Gør noget med det aktuelle dias, der refereres til i variablen' mySlide ''Debug.Print mySlide.NameNæste dias |
Sløjfe igennem alle former for aktivt dias
PowerPoints magt kan realiseres ved at bruge ‘Former.’ Koden herunder går gennem alle formerne på det aktuelle dias, så du kan manipulere dem, som du vil;
123456789 | Dæmp strømSlide as SlideDim shp som formIndstil currentSlide = Application.ActiveWindow.View.SlideFor hver shp I currentSlide.Shapes'Gør noget med den aktuelle form, der refereres til i variablen' shp ''Udskriv f.eks. Navnet på formen i vinduet UmiddelbartDebug.Print shp.NameNæste shp |
Gå gennem alle former i alle dias
Du kan gennemgå alle formerne i præsentationen ved at tilføje en loop til at gå gennem alle dias.
123456789 | Dæmp strømSlide as SlideDim shp som formFor hver currentSlide In ActivePresentation.SlidesFor hver shp I currentSlide.Shapes'Gør noget med den aktuelle form, der refereres til i variablen' shp 'Debug.Print shp.NameNæste shpNæste aktuelleSlide |
Gå gennem alle tekstbokse i Active Slide
Tekstbokse er den oftest anvendte form i PowerPoint -præsentationer. Du kan gennemgå alle tekstfelterne ved at tilføje en markering for ‘Formtype.’ TexBoxes har formtypen defineret som VBA -konstanten msoTextBox (den numeriske værdi af konstanten er 17)
1234567891011 | Dæmp strømSlide as SlideDim shp som formIndstil currentSlide = Application.ActiveWindow.View.SlideFor hver shp I currentSlide.Shapes'Kontroller, om formtypen er msoTextBoxHvis shp.Type = 17 Så 'msoTextBox = 17'Udskriv teksten i tekstboksenDebug.Print shp.TextFrame2.TextRange.TextAfslut HvisNæste shp |
Gå gennem alle tekstbokse i alle dias
Igen kan du gå gennem alle tekstbokse i præsentationen ved at tilføje en loop til at gå gennem alle dias.
1234567891011 | Dim strømSlide as Slide Dim shp as ShapeFor hver currentSlide In ActivePresentation.SlidesFor hver shp I currentSlide.Shapes'Kontroller, om formtypen er msoTextBoxHvis shp.Type = 17 Så 'msoTextBox = 17'Gør noget med den tekstboks, der refereres til i variablen' shp 'Debug.Print shp.TextFrame2.TextRange.TextAfslut HvisNæste shpNæste aktuelleSlide |
Kopier udvalgte dias til ny PPT -præsentation
For at kopiere bestemte dias til en ny præsentation skal du først vælge de ønskede dias i den eksisterende præsentation og derefter køre koden herunder;
123456789101112131415161718 | Dim aktuelle præsentation som præsentationDæmp strømSlide as SlideDim nyPræsentation som præsentation'Gem reference til den aktuelle præsentationIndstil currentPresentation = Application.ActivePresentation'Gem reference til det aktuelle diasIndstil currentSlide = Application.ActiveWindow.View.Slide'Tilføj ny præsentation, og gem den i en referenceIndstil NewPresentation = Application.Presentations.Add'Kopier valgte diasUdvælgelse. Kopi'Indsæt det i ny præsentationNy præsentation. Dias. Indsæt |
Kopier aktivt dias til slut på aktiv præsentation
12345 | 'Kopier det aktuelle diasApplication.ActiveWindow.View.Slide.Copy'Indsæt til sidstActivePresentation.Slides.Paste |
Nyttige PowerPoint -makroeksempler
Her er nogle nyttige makroeksempler, der viser, hvordan du udfører opgaver. Disse vil også demonstrere de begreber, der er beskrevet ovenfor.
Skift dias under diasshow
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex som heltalDim SlideIndexPrevious As Integer'Skift nuværende dias til valgt dias 4 under diasshowSlideIndex = 4'Indeks for det aktuelle diasshowvindue er 1 i SlideShowWindows -samlingenSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexAfslut Sub |
Skift skrifttype på alle dias i alle tekstbokse
123456789101112131415 | Sub ChangeFontOnAllSlides ()Dim mySlide Som diasDim shp som form'Skift skriftstørrelse på alle diasFor hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Skift skrifttype til 24shp.TextFrame.TextRange.Font.Size = 24Afslut HvisNæste shpNæste mySlideAfslut Sub |
Skift mellem store og små bogstaver i alle tekstbokse
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide Som diasDim shp som form'Skift fra store bogstaver til normale sager for alle diasFor hver mySlide i ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Skift store bogstaver til normal bogstavshp.TextFrame2.TextRange.Font.Allcaps = FalskAfslut HvisNæste shpNæste mySlideAfslut Sub |
Skift mellem store og små bogstaver i alle tekstbokse
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide Som diasDim shp som form'Skift mellem store og store bogstaver for alle diasFor hver mySlide i ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Skift mellem store og store bogstavershp.TextFrame2.TextRange.Font.Allcaps = _Ikke shp.TextFrame2.TextRange.Font.AllcapsAfslut HvisNæste shpNæste mySlideAfslut Sub |
Fjern understregning fra nedstigninger
I typografi er en nedstigning den del af et bogstav, der strækker sig under en skrifttypes grundlinje. I de fleste skrifttyper er nedstigninger forbeholdt små bogstaver som g, j, q, p, y og nogle gange f.
Når du understreger tekst, ser det ikke pænt ud under nedstigninger. Her er koden til fjernelse af understregning fra alle sådanne tegn g, j, p, q og y i hele præsentationen.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide Som diasDim shp som formDim descenders_list som strengDim sætning som strengDim x Så længe'Fjern understregninger fra Descendersdescenders_list = "gjpqy"For hver mySlide i ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Fjern understregning fra bogstaverne "gjpqy"Med shp.TextFrame.TextRangesætning = .TekstFor x = 1 Til Len (.Tekst)Hvis InStr (descenders_list, Mid $ (sætning, x, 1))> 0 Derefter.Tegn (x, 1) .Font.Underline = FalskAfslut HvisNæste xAfslut medAfslut HvisNæste shpNæste mySlideAfslut Sub |
Fjern animationer fra alle dias
Brug koden herunder til at fjerne alle animationer i en præsentation.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide Som diasDim i så længeFor hver mySlide i ActivePresentation.SlidesFor i = mySlide.TimeLine.MainSequence.Count til 1 trin -1'Fjern hver animationmySlide.TimeLine.MainSequence.Item (i) .SletNæste iNæste mySlideAfslut Sub |
Gem præsentation som PDF
Du kan nemt gemme aktiv præsentation i PDF -format.
1234567891011 | Under GemPresentationAsPDF ()Dim pptName som strengDim PDFnavn som streng'Gem PowerPoint som PDFpptName = ActivePresentation.FullName'Erstat PowerPoint -filtypenavnet i navnet til PDFPDFName = Venstre (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Afslut Sub |
Find og erstat tekst
Du kan finde og erstatte tekst i Alle tekstbokse med alle dias. Efter den første forekomst af den tekst, du vil finde (defineret af findWhat), skal du gå igennem kommandoen Find for at finde andre forekomster, hvis nogen.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide Som diasDim shp som formDim findWhat As StringDim erstat Med As StringDim ShpTxt som tekstområdeDim TmpTxt som TextRangefindWhat = "sjakal"ReplaceWith = "ræv"'Find og Find og erstatFor hver mySlide i ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17Indstil ShpTxt = shp.TextFrame.TextRange'Find første forekomst af "Find" -ord (hvis det findes)Indstil TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = erstatWith, _WholeWords: = True)'Find eventuelle yderligere forekomster af "Find" -ord (hvis det findes)Do While Not TmpTxt er ingentingIndstil ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Indstil TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat: = erstatWith, _WholeWords: = True)SløjfeAfslut HvisNæste shpNæste mySlideAfslut Sub |
Eksporter dias som billede
Du kan eksportere Current SLide (eller ethvert andet dias) som et PNG- eller JPG- (JPEG) eller BMP -billede.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType som strengDim pptName som strengDim imageName som strengDim mySlide Som dias'Eksporter nuværende dias til billedeimageType = "png" 'eller jpg eller bmppptName = ActivePresentation.FullNameimageName = Venstre (pptName, InStr (pptName, ".")) & imageTypeIndstil mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeAfslut Sub |
Ændre størrelsen på billedet til at dække fuld dias
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide Som diasDim shp som form'Ændre størrelsen på billedet til fuld diasstørrelse'Skift højde og bredde på den første form på det aktuelle dias'for at passe til diasdimensionerneIndstil mySlide = Application.ActiveWindow.View.slideIndstil shp = mySlide.Shapes (1)'''' Erstat to statemetns ovenfor med'' følgende erklæring, hvis du vil'' udvid den aktuelt valgte form'' vil give fejl, hvis der ikke er valgt noget'Indstil shp = ActiveWindow.Selection.ShapeRange (1)Med shp.LockAspectRatio = Falsk.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth. Venstre = 0.Top = 0Afslut medAfslut Sub |
Afslut alle løbende diasshow
Hvis du har flere diasshow åbne på samme tid, kan du lukke dem alle sammen ved hjælp af makroen herunder.
1234567 | Sub ExitAllRunningSlideShows ()Gør Mens SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitSløjfeAfslut Sub |
Automatisering af PowerPoint fra Excel
Du kan også oprette forbindelse til PowerPoint via andre programmer (f.eks. Excel og Word). Som det første trin skal du referere til en forekomst af PowerPoint.
Der er to måder at gøre det på - tidlig binding og sen binding .
Åbn PowerPoint - Tidlig binding
I 'Tidlig binding' skal du eksplicit angive en reference til 'Microsoft PowerPoint 16 Object Library' (til MS Office 2022) i VBE (Visual Basic Editor) ved hjælp af indstillingen Værktøjs-> Referencer.
123 | 'Tidlig bindingDim pptApp som applikationIndstil pptApp = Ny PowerPoint.Application |
Åbn PowerPoint - sen binding
I 'Late Binding' deklareres applikationsvariabel som et objekt, og VBA -motor opretter forbindelse til den korrekte applikation på løbetid.
123 | 'Sent bindendeDim pptApp som objektIndstil pptApp = CreateObject ("PowerPoint.Application") |
Gør applikationen synlig
Når du har angivet referencen til PowperPoint -applikationen, skal du muligvis gøre den synlig.
1 | pptApp.Visible = True |
Manipuler PowerPoint
Du kan bruge alle metoderne til at manipulere præsentationer, indefra PowerPoint, beskrevet ovenfor fra Excel ved blot at tilføje referencen til PowerPoint oprettet af dig ovenfor.
For eksempel
1 | Presentations.Open ("Min præsentation.pptx") |
skal bruges på denne måde
1 | pptApp .Presentations.Open ("Min præsentation.pptx") |
Luk applikationen
Når du har gennemført, hvad du ville gøre med PowerPoint -applikationen, skal du lukke det og skulle frigive referencen.
12 | pptApp. AfslutIndstil pptApp = Intet |
Kopiér fra Excel til PowerPoint
Denne kode kopierer et område fra Excel til PowerPoint:
Bemærk: Det er blevet holdt så enkelt som muligt at vise, hvordan et område fra Excel kan kopieres til PowerPoint ved hjælp af VBA.
12345678910111213141516171819 | Sub copyRangeToPresentation ()'Åbn ny PowerPoint -forekomstIndstil pptApp = CreateObject ("PowerPoint.Application")Med pptApp'Opret en ny præsentationIndstil ppt = .Presentations.Add'Tilføj et tomt diasIndstil newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Kopier rækkevidde fra aktivt ark i ExcelActiveSheet.Range ("A1: E10"). Kopiér'Indsæt til Powerpoint som et billedenewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Skift til PowerPoint.AktiverAfslut medAfslut Sub |
Ofte stillede spørgsmål om PowerPoint VBA
Hvad er makroer i PPT?
En makro er et generelt udtryk, der refererer til et sæt programmeringsinstruktioner, der automatiserer opgaver. PowerPoint (PPT) Makroer automatiserer opgaver i PowerPoint ved hjælp af programmeringssproget VBA.
Hvordan bruger jeg VBA i PowerPoint?
Hvis du vil bruge VBA i PowerPoint, skal du åbne VBA Editor (ALT + F11 eller Developer> Visual Basic).
Hvordan opretter jeg en makro i PowerPoint?
1. Åbn VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå til Indsæt> Modul for at oprette et kodemodul
3. Skriv ‘Sub HelloWorld’, og tryk på Enter
4. Mellem linjerne 'Sub HelloWorld' og 'End Sub' skal du skrive 'MsgBox' Hello World! '
5. Du har oprettet en makro!
6. Tryk nu på 'F5' for at køre makroen
Skrevet af: Vinamra Chandra