Dette er en komplett guide for automatisering av PowerPoint ved bruk av VBA (Visual Basic for Applications) makroer. Nedenfor finner du mange nyttige eksempler.
VBA PDF (gratis nedlastinger)
Last ned vår gratis Microsoft PowerPoint VBA -opplæring! Eller VBA -opplæringsprogrammer for andre Office -programmer!
nedlasting
Opplæring i PowerPoint VBA (makroer)
Lagre som makroaktivert presentasjon
Presentasjonen med VBA-kode skal være "Lagret som" PowerPoint makroaktivert presentasjon (*.pptm)
Aktiver kategorien 'Utvikler' på båndet
Du bør aktivere kategorien Utvikler på båndet før du oppretter VBA -kode. Velg Fil -> Alternativer, klikk deretter på "Tilpass bånd" og merk av i boksen ved siden av "Utvikler" -fanen i den høyre ruten.
Lag en PowerPoint -makro
Dette er et enkelt eksempel på en PowerPoint VBA -makro:
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName som strengDim PDFnavn som streng'Lagre PowerPoint som PDFpptName = ActivePresentation.FullName'Erstatt PowerPoint -filtypen i navnet til PDFPDFName = Venstre (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Slutt Sub |
Den lagrer den aktive presentasjonen som en PDF. Hver kodelinje gjør følgende:
- Oppretter variabler for PowerPoint -navnet og PDF -navnet
- Tilordner det aktive presentasjonsnavnet til varianten pptName
- Oppretter hele PDF -navnet
- Lagrer presentasjonen som en PDF
PowerPoint -applikasjon
Når VBA -kode kjører i en PowerPoint -presentasjon, er PowerPoint -applikasjonen standardprogrammet, og den kan manipuleres uten eksplisitt referanse. Lag en ny presentasjon
For å lage en presentasjon, bruk Legg til -metoden for PowerPoint -programmet.
123 | Application.Presentations.Add'eller uten eksplisitt referansePresentasjoner. Legg til |
Åpne en ny presentasjon
For å åpne en ny og tom presentasjon, bruk Add -metoden for Application.Presentations -samlingen
1 | Presentasjoner. Legg til |
Åpne en eksisterende presentasjon
For å åpne en presentasjon du allerede har opprettet, bruk Open -metoden for Application.Presentations -samlingen
1 | Presentations.Open ("Min presentasjon.pptx") |
Koden ovenfor forutsetter at presentasjonen er i samme katalog som PowerPoint -presentasjonen som inneholder koden.
Åpne og tilordne en variabel
Du bør tilordne presentasjonen du åpner til en variabel, slik at du kan manipulere den i henhold til dine krav.
12 | Dim ppt som presentasjonSett ppt = Presentations.Open ("Min presentasjon.pptx") |
Se Aktiv presentasjon
Bruk referansen ActivePrentation til å manipulere presentasjonen som er aktiv i GUI når VBA -koden kjøres.
12 | 'Skriv ut navnet på ActivePresentation i det umiddelbare vinduetDebug.Print ActivePresentation.Name |
Lagre nåværende presentasjon
Uttalelsen nedenfor vil lagre den aktive presentasjonen hvis den ble lagret før. Hvis den ikke er lagret, blir du bedt om å åpne "Lagre som" -dialogboksen.
1 | ActivePresentation.Save |
Lukk nåværende presentasjon
Uttalelsen nedenfor vil lukke den aktive presentasjonen, selv om den ikke ble lagret etter den siste redigeringen.
1 | ActivePresentation.Close |
Nyttige referanser
Tilordne eksisterende presentasjon (etter navn) til variabel
12 | Dim myPresentationByName som presentasjonAngi myPresentationByName = Application.Presentations ("Min presentasjon") |
Tilordne Active Slide til Variable
12 | Dim currentSlide As SlideAngi currentSlide = Application.ActiveWindow.View.Slide |
Tilordne lysbilde etter indeks til variabel
12 | Dim mySlide As SlideSett mySlide = ActivePresentation.Slides (11) |
Antall lysbilder
12 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Få lysbildeindeks for gjeldende lysbilde
12 | Dim currentSlideIndex som lysbildecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Legg til et tomt lysbilde i slutten av lysbildefremvisningen
1234567 | Dim slideCount As LongDim newSlide as SlideslideCount = ActivePresentation.Slides.CountAngi newSlide = ActivePresentation.Slides.Add (slideCount + 1, 12)'eller som ppLayoutBlank = 12Angi newSlide = ActivePresentation.Slides.Add (slideCount + 1, ppLayoutBlank) |
Legg til et lysbilde etter gjeldende lysbilde
12345 | Dim newSlide As SlideDim currentSlideIndex som heltallcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexAngi newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) |
Slett et lysbilde
1234 | Dim currentSlideIndex som heltallcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides (currentSlideIndex). Slett |
Gå til et bestemt lysbilde
12 | 'Dette tar deg til lysbilde 4Application.ActiveWindow.View.GotoSlide (4) |
Flytt lysbilde
Du kan flytte et lysbilde fra den gamle posisjonen til den nye posisjonen
123456 | 'Gå fra lysbilde 3 til første lysbildeDim oldPosition som heltall, dim newPosition som heltalloldPosition = 3newPosition = 1ActivePresentation.Slides (oldPosition) .MoveTo toPos: = newPosition |
Sløyfe gjennom alle lysbilder
Du kan gjøre noe med hvert lysbilde eller gå gjennom alle lysbildene for å finne noen lysbilder og gjøre noe med å bruke koden;
123456 | Dim mySlide som lysbildeFor hver mySlide In ActivePresentation.Slides'Gjør noe med gjeldende lysbilde referert til i variabelen' mySlide ''Debug.Print mySlide.NameNeste lysbilde |
Gå gjennom alle former for aktivt lysbilde
Kraften til PowerPoint kan realiseres ved å bruke ‘Former.’ Koden nedenfor går gjennom alle figurene på det nåværende lysbildet, slik at du kan manipulere dem som du vil;
123456789 | Dim currentSlide as SlideDim shp som ShapeAngi currentSlide = Application.ActiveWindow.View.SlideFor hver shp I currentSlide.Shapes'Gjør noe med gjeldende form referert til i variabelen' shp ''Skriv for eksempel ut navnet på formen i vinduet UmiddelbartDebug.Print shp.NameNeste shp |
Gå gjennom alle former i alle lysbilder
Du kan gå gjennom alle figurene i presentasjonen ved å legge til en løkke for å gå gjennom alle lysbildene.
123456789 | Dim currentSlide as SlideDim shp som ShapeFor hver currentSlide In ActivePresentation.SlidesFor hver shp I currentSlide.Shapes'Gjør noe med gjeldende form referert til i variabelen' shp 'Debug.Print shp.NameNeste shpNeste currentSlide |
Gå gjennom alle tekstbokser for Active Slide
Tekstbokser er den mest brukte formen i PowerPoint -presentasjoner. Du kan gå gjennom alle tekstboksene ved å legge til en avkrysningsboks for "Shape Type." TexBoxes har formtypen definert som VBA -konstanten msoTextBox (den numeriske verdien av konstanten er 17)
1234567891011 | Dim currentSlide as SlideDim shp som ShapeAngi currentSlide = Application.ActiveWindow.View.SlideFor hver shp I currentSlide.Shapes'Sjekk om formtypen er msoTextBoxHvis shp.Type = 17 Så 'msoTextBox = 17'Skriv ut teksten i tekstboksenDebug.Print shp.TextFrame2.TextRange.TextSlutt omNeste shp |
Gå gjennom alle tekstbokser i alle lysbilder
Igjen kan du gå gjennom alle tekstboksene i presentasjonen ved å legge til en løkke for å gå gjennom alle lysbildene.
1234567891011 | Dim currentGlide as Slide Dim shp as ShapeFor hver currentSlide In ActivePresentation.SlidesFor hver shp I currentSlide.Shapes'Sjekk om formtypen er msoTextBoxHvis shp.Type = 17 Så 'msoTextBox = 17'Gjør noe med TextBox referert til i variabelen' shp 'Debug.Print shp.TextFrame2.TextRange.TextSlutt omNeste shpNeste currentSlide |
Kopier utvalgte lysbilder til ny PPT -presentasjon
For å kopiere bestemte lysbilder til en ny presentasjon, velg først de ønskede lysbildene i den eksisterende presentasjonen og kjør deretter koden nedenfor;
123456789101112131415161718 | Demp nåværende presentasjon som presentasjonDim currentSlide as SlideDim newPresentation as Presentation'Lagre referanse til gjeldende presentasjonAngi currentPresentation = Application.ActivePresentation'Lagre referanse til gjeldende lysbildeAngi currentSlide = Application.ActiveWindow.View.Slide'Legg til ny presentasjon og lagre i en referanseAngi NewPresentation = Application.Presentations.Add'Kopier valgte lysbilderValg. Kopi'Lim den inn i ny presentasjonNy presentasjon. Lysbilder. Lim inn |
Kopier aktivt lysbilde til slutten av aktiv presentasjon
12345 | 'Kopier gjeldende lysbildeApplication.ActiveWindow.View.Slide.Copy'Lim inn til sluttActivePresentation.Slides.Lime inn |
Nyttige PowerPoint -makroeksempler
Her er noen nyttige makroeksempler som viser hvordan du gjør oppgaver. Disse vil også demonstrere konseptene beskrevet ovenfor.
Endre lysbilde under lysbildefremvisning
1234567891011 | Sub ChangeSlideDuringSlideShow ()Dim SlideIndex som heltallDim SlideIndexPrevious As Integer'Endre gjeldende lysbilde til valgt lysbilde 4 under lysbildefremvisningSlideIndex = 4'Indeksen for det nåværende lysbildefremvisningsvinduet er 1 i SlideShowWindows -samlingenSlideIndexPrevious = SlideShowWindows (1) .View.CurrentShowPositionSlideShowWindows (1) .View.GotoSlide SlideIndexSlutt Sub |
Endre skrift på alle lysbilder i alle tekstbokser
123456789101112131415 | Sub ChangeFontOnAllSlides ()Dim mySlide Som lysbildeDim shp som form'Endre skriftstørrelse på alle lysbilderFor hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Endre skriftstørrelse til 24shp.TextFrame.TextRange.Font.Size = 24Slutt omNeste shpNeste mySlideSlutt Sub |
Endre bokstav fra øvre til normal i alle tekstbokser
123456789101112131415 | Sub ChangeCaseFromUppertoNormal ()Dim mySlide Som lysbildeDim shp som form'Endre fra store bokstaver til normale bokstaver for alle lysbilderFor hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Endre store bokstaver til normale bokstavershp.TextFrame2.TextRange.Font.Allcaps = FalseSlutt omNeste shpNeste mySlideSlutt Sub |
Skift mellom store og små bokstaver i alle tekstbokser
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal ()Dim mySlide Som lysbildeDim shp som form'Bytt mellom store bokstaver og normale bokstaver for alle lysbilderFor hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Bytt mellom store og små bokstavershp.TextFrame2.TextRange.Font.Allcaps = _Ikke shp.TextFrame2.TextRange.Font.AllcapsSlutt omNeste shpNeste mySlideSlutt Sub |
Fjern understreking fra nedstigninger
I typografi er en nedstigning den delen av en bokstav som strekker seg under grunnlinjen til en skrift. I de fleste fonter er nedstigninger reservert for små bokstaver som g, j, q, p, y og noen ganger f.
Når du understreker tekst, ser det ikke bra ut under nedstigninger. Her er koden for å fjerne understreking fra alle slike tegn g, j, p, q og y i hele presentasjonen.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders ()Dim mySlide Som lysbildeDim shp som formDim descenders_list som strengDim setning som strengDim x Så lenge'Fjern understrekninger fra nedstigningerdescenders_list = "gjpqy"For hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17'Fjern understrekningen fra bokstavene "gjpqy"Med shp.TextFrame.TextRangesetning = .TekstFor x = 1 Til Len (.Tekst)If InStr (descenders_list, Mid $ (phrase, x, 1))> 0 Then.Tegn (x, 1) .Font.Underline = FalskSlutt omNeste xSlutt medSlutt omNeste shpNeste mySlideSlutt Sub |
Fjern animasjoner fra alle lysbilder
Bruk koden nedenfor for å fjerne alle animasjoner i en presentasjon.
123456789101112 | Sub RemoveAnimationsFromAllSlides ()Dim mySlide Som lysbildeDim i As LongFor hver mySlide In ActivePresentation.SlidesFor i = mySlide.TimeLine.MainSequence.Count til 1 trinn -1'Fjern hver animasjonmySlide.TimeLine.MainSequence.Item (i) .SlettNeste jegNeste mySlideSlutt Sub |
Lagre presentasjonen som PDF
Du kan enkelt lagre Active Presentation i PDF -format.
1234567891011 | Sub SavePresentationAsPDF ()Dim pptName som strengDim PDFnavn som streng'Lagre PowerPoint som PDFpptName = ActivePresentation.FullName'Erstatt filtypen PowerPoint i navnet til PDFPDFName = Venstre (pptName, InStr (pptName, ".")) & "Pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 'ppFixedFormatTypePDF = 2Slutt Sub |
Finn og erstatt tekst
Du kan finne og erstatte tekst i Alle tekstbokser med alle lysbilder. Etter den første forekomsten av teksten du vil finne (definert av findWhat) må du gå gjennom Finn -kommandoen for å finne andre forekomster, hvis noen.
123456789101112131415161718192021222324252627282930313233 | Sub FindAndReplaceText ()Dim mySlide Som lysbildeDim shp som formDim findWhat As StringDim erstatteWith As StringDim ShpTxt Som TextRangeDim TmpTxt As TextRangefindWhat = "sjakal"ReplaceWith = "fox"'Finn og finn og erstattFor hver mySlide In ActivePresentation.SlidesFor hver shp i mySlide.ShapesHvis shp.Type = 17 Så 'msoTextBox = 17Sett ShpTxt = shp.TextFrame.TextRange'Finn første forekomst av "Finn" -ord (hvis det finnes)Angi TmpTxt = ShpTxt.Replace (finnWhat, _Erstatt hva: = erstattWith, _WholeWords: = True)'Finn ytterligere forekomster av "Finn" -ord (hvis det finnes)Do While Not TmpTxt er ingentingAngi ShpTxt = ShpTxt.Characters (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Sett TmpTxt = ShpTxt.Replace (finnWhat, _Erstatt hva: = erstattWith, _WholeWords: = True)LøkkeSlutt omNeste shpNeste mySlideSlutt Sub |
Eksporter lysbilde som bilde
Du kan eksportere Current SLide (eller et annet lysbilde) som et PNG- eller JPG- (JPEG) eller BMP -bilde.
1234567891011121314 | Sub ExportSlideAsImage ()Dim imageType As StringDim pptName som strengDim imageName som strengDim mySlide Som lysbilde'Eksporter gjeldende lysbilde til bildeimageType = "png" 'eller jpg eller bmppptName = ActivePresentation.FullNameimageName = Venstre (pptName, InStr (pptName, ".")) & imageTypeSett mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeSlutt Sub |
Endre størrelse på bildet for å dekke hele lysbildet
1234567891011121314151617181920212223242526 | Sub ResizeImageToCoverFullSlide ()Dim mySlide Som lysbildeDim shp som form'Endre størrelsen på bildet til full lysbildestørrelse'Endre høyde og bredde på den første formen på det nåværende lysbildet'for å passe til lysbildedimensjoneneSett mySlide = Application.ActiveWindow.View.slideSett shp = mySlide.Shapes (1)'''' Erstatt to statemetns ovenfor med'' følgende uttalelse hvis du vil'' utvide den nåværende valgte formen'' vil gi feil hvis ingenting er valgt'Sett shp = ActiveWindow.Selection.ShapeRange (1)Med shp.LockAspectRatio = Falsk.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth. Venstre = 0.Topp = 0Slutt medSlutt Sub |
Avslutt alle løpende lysbildefremvisninger
Hvis du har flere lysbildefremvisninger åpne samtidig, kan du lukke dem alle ved å bruke makroen nedenfor.
1234567 | Sub ExitAllRunningSlideShows ()Do While SlideShowWindows.Count> 0SlideShowWindows (1) .View.ExitLøkkeSlutt Sub |
Automatisere PowerPoint fra Excel
Du kan også koble til PowerPoint gjennom andre programmer (som Excel og Word). Som det første trinnet må du referere til en forekomst av PowerPoint.
Det er to måter å gjøre det på - tidlig binding og sen binding .
Åpne PowerPoint - Tidlig binding
I 'Early Binding' må du eksplisitt angi en referanse til 'Microsoft PowerPoint 16 Object Library' (for MS Office 2022) i VBE (Visual Basic Editor) ved å bruke alternativet Verktøy-> Referanser.
123 | 'Tidlig bindingDim pptApp som applikasjonAngi pptApp = Ny PowerPoint.Application |
Åpne PowerPoint - sen binding
I 'Sent binding' er applikasjonsvariabelen deklarert som et objekt, og VBA -motoren kobles til riktig applikasjon ved kjøretid.
123 | 'Sen bindingDim pptApp som objektSett pptApp = CreateObject ("PowerPoint.Application") |
Gjør applikasjonen synlig
Etter at du har angitt referansen til PowperPoint -applikasjonen, må du kanskje gjøre den synlig.
1 | pptApp.Visible = True |
Manipulere PowerPoint
Du kan bruke alle metodene til å manipulere presentasjoner, fra PowerPoint, beskrevet ovenfor fra Excel ved bare å legge til referansen til PowerPoint opprettet av deg ovenfor.
For eksempel
1 | Presentations.Open ("Min presentasjon.pptx") |
må brukes likte dette
1 | pptApp .Presentations.Open ("Min presentasjon.pptx") |
Lukk programmet
Når du har fullført det du ønsket å gjøre med PowerPoint -applikasjonen, må du lukke den og slippe referansen.
12 | pptApp. AvsluttSett pptApp = Nothing |
Kopier fra Excel til PowerPoint
Denne koden kopierer et område fra Excel til PowerPoint:
Merk: Det har blitt holdt så enkelt som mulig å vise hvordan et område fra Excel kan kopieres til PowerPoint ved hjelp av VBA.
12345678910111213141516171819 | Sub copyRangeToPresentation ()'Åpne ny PowerPoint -forekomstSett pptApp = CreateObject ("PowerPoint.Application")Med pptApp'Lag en ny presentasjonAngi ppt = .Presentations.Add'Legg til et tomt lysbildeAngi newSlide = ppt.Slides.Add (1, 12) 'ppLayoutBlank = 12'Kopier rekkevidde fra aktivt ark i ExcelActiveSheet.Range ("A1: E10"). Kopier'Lim inn på Powerpoint som et bildenewSlide.Shapes.PasteSpecial DataType: = 2 '2 = ppPasteEnhancedMetafile'Bytt til PowerPoint.AktiverSlutt medSlutt Sub |
Vanlige spørsmål om PowerPoint VBA
Hva er makroer i PPT?
En makro er et generelt begrep som refererer til et sett med programmeringsinstruksjoner som automatiserer oppgaver. PowerPoint (PPT) Makroer automatiserer oppgaver i PowerPoint ved hjelp av programmeringsspråket VBA.
Hvordan bruker jeg VBA i PowerPoint?
For å bruke VBA i PowerPoint, åpner du VBA Editor (ALT + F11 eller Developer> Visual Basic).
Hvordan lager jeg en makro i PowerPoint?
1. Åpne VBA Editor (ALT + F11 eller Developer> Visual Basic)
2. Gå til Sett inn> Modul for å lage en kodemodul
3. Skriv ‘Sub HelloWorld’ og trykk Enter
4. Mellom linjene 'Sub HelloWorld' og 'End Sub' skriver du 'MsgBox' Hello World! '
5. Du har laget en makro!
6. Trykk nå "F5" for å kjøre makroen
Skrevet av: Vinamra Chandra