PowerPoint VBA -makroeksempler og vejledning

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

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave