PowerPoint VBA makroeksempler og opplæring

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave