PowerPoint VBA-macrovoorbeelden en zelfstudie

Dit is een complete gids voor het automatiseren van PowerPoint met behulp van VBA-macro's (Visual Basic for Applications). Hieronder vindt u veel bruikbare voorbeelden.

VBA PDF (gratis downloads)

Download onze gratis Microsoft PowerPoint VBA-zelfstudie! Of VBA-tutorials voor andere Office-programma's!

Downloaden

PowerPoint VBA (macro's) zelfstudie

Opslaan als presentatie met macro's

De presentatie met VBA-code moet 'Opgeslagen als' PowerPoint Macro-enabled presentatie (*.pptm) ​​zijn

Tabblad 'Ontwikkelaar' in het lint inschakelen

U moet het tabblad Ontwikkelaar op het lint inschakelen voordat u VBA-code maakt. Kies hiervoor Bestand -> Opties en klik vervolgens op 'Lint aanpassen' en vink het vakje aan naast het tabblad 'Ontwikkelaar' in het rechterdeelvenster.

PowerPoint-macro maken

Dit is een eenvoudig voorbeeld van een PowerPoint VBA-macro:

1234567891011 Sub OpslaanPresentatieAsPDF()Dim pptName As StringDim PDFName As String' PowerPoint opslaan als PDFpptName = ActivePresentation.FullName' Vervang de PowerPoint-bestandsextensie in de naam naar PDFPDFNaam = Links(pptNaam, InStr(pptNaam, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Einde sub

Het slaat de actieve presentatie op als PDF. Elke regel code doet het volgende:

  • Maakt variabelen voor de PowerPoint-naam en de PDF-naam
  • Wijst de actieve presentatienaam toe aan de variabele pptName
  • Maakt de volledige PDF-naam
  • Slaat de presentatie op als PDF

PowerPoint-toepassing

Wanneer VBA-code wordt uitgevoerd in een PowerPoint-presentatie, is PowerPoint-toepassing de standaardtoepassing en kan deze worden gemanipuleerd zonder expliciete verwijzing. Een nieuwe presentatie maken

Gebruik de methode Toevoegen van de PowerPoint-toepassing om een ​​presentatie te maken.

123 Toepassing.Presentaties.Toevoegen' of zonder expliciete verwijzingPresentaties.Toevoegen

Een nieuwe presentatie openen

Om een ​​nieuwe en lege presentatie te openen, gebruikt u de methode Toevoegen van de verzameling Application.Presentations

1 Presentaties.Toevoegen

Een bestaande presentatie openen

Om een ​​presentatie te openen die u al hebt gemaakt, gebruikt u de Open methode van Application.Presentations collectie

1 Presentaties.Open ("Mijn Presentatie.pptx")

De bovenstaande code gaat ervan uit dat de presentatie zich in dezelfde map bevindt als de PowerPoint-presentatie die de code bevat.

Openen en toewijzen aan een variabele

U moet de presentatie die u opent toewijzen aan een variabele, zodat u deze kunt manipuleren volgens uw vereisten.

12 Dim ppt als presentatieStel ppt = Presentations.Open("Mijn presentatie.pptx")

Raadpleeg Actieve presentatie

Gebruik de referentie ActivePrentation om de presentatie te manipuleren die actief is in de GUI wanneer de VBA-code wordt uitgevoerd.

12 ' Druk de naam van de ActivePresentation af in het directe vensterDebug.Print ActivePresentation.Name

Huidige presentatie opslaan

De onderstaande instructie zal de actieve presentatie opslaan als deze eerder was opgeslagen. Als het niet is opgeslagen, wordt u gevraagd naar het dialoogvenster 'Opslaan als'.

1 ActivePresentation.Save

Huidige presentatie sluiten

De onderstaande instructie sluit de actieve presentatie, zelfs als deze niet is opgeslagen na de laatste bewerking.

1 ActivePresentation.Sluiten

Nuttige referenties

Bestaande presentatie (op naam) toewijzen aan variabele

12 Dim myPresentationByName als presentatieStel myPresentationByName = Application.Presentations ("Mijn presentatie") in

Actieve dia toewijzen aan variabele

12 Stroom dimmen Schuif als schuifStel currentSlide = Application.ActiveWindow.View.Slide in

Dia per index toewijzen aan variabele

12 Dim mySlide als diaStel mySlide = ActivePresentation.Slides(11) in

Tel het aantal dia's

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Dia-indexnummer van huidige dia ophalen

12 Dim stroomSlideIndex als diacurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Een lege dia toevoegen aan het einde van de diavoorstelling

1234567 Dim slideCount As LongDim newSlide als SlideslideCount = ActivePresentation.Slides.CountStel newSlide = ActivePresentation.Slides.Add in (slideCount + 1, 12)' of als ppLayoutBlank = 12Stel newSlide = ActivePresentation.Slides.Add in (slideCount + 1, ppLayoutBlank)

Een dia toevoegen na de huidige dia

12345 Nieuwe dia dimmen als diaDim stroomSlideIndex als geheel getalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexStel newSlide = ActivePresentation.Slides.Add (currentSlideIndex, ppLayoutBlank) in

Een dia verwijderen

1234 Dim stroomSlideIndex als geheel getalcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides(currentSlideIndex).Verwijderen

Ga naar een specifieke dia

12 ' Dit brengt je naar dia nummer 4Application.ActiveWindow.View.GotoSlide (4)

Dia verplaatsen

U kunt een dia van de oude positie naar de nieuwe positie verplaatsen

123456 ' Ga van dia 3 naar de eerste diaDim oldPosition als geheel getal, dim newPosition als geheel getaloude Positie = 3nieuwePositie = 1ActivePresentation.Slides(oldPosition).MoveTo toPos:=newPosition

Loop door alle dia's

Je kunt met elke dia iets doen of door alle dia's gaan om een ​​paar dia's te vinden en er iets aan te doen met het gebruik van de code;

123456 Dim mySlide als diaVoor elke mySlide In ActivePresentation.Slides' Doe iets met de huidige dia waarnaar wordt verwezen in variabele 'mySlide'' Debug.Print mySlide.NameVolgende dia

Loop door alle vormen van actieve dia

De kracht van PowerPoint kan worden gerealiseerd door 'Vormen' te gebruiken. De onderstaande code loopt door alle vormen op de huidige dia, zodat u ze kunt manipuleren zoals u wilt;

123456789 Stroom dimmenSlide als SlideDim shp als vormStel currentSlide = Application.ActiveWindow.View.Slide inVoor elke shp In currentSlide.Shapes' Doe iets met de huidige vorm waarnaar wordt verwezen in variabele 'shp'' Druk bijvoorbeeld de naam van de vorm af in het onmiddellijke vensterDebug.Print shp.Namevolgende shp

Loop door Alle vormen in Alle dia's

U kunt door alle vormen in de presentatie lopen door een lus toe te voegen om door alle dia's te gaan.

123456789 Stroom dimmenSlide als SlideDim shp als vormVoor elke huidige Slide In ActivePresentation.SlidesVoor elke shp In currentSlide.Shapes' Doe iets met de huidige vorm waarnaar wordt verwezen in variabele 'shp'Debug.Print shp.Namevolgende shpVolgende huidige Slide

Loop door alle tekstvakken van Active Slide

Tekstvakken zijn de meest gebruikte vorm in PowerPoint-presentaties. U kunt door alle tekstvakken lopen door een vinkje voor 'Vormtype' toe te voegen. TexBoxen hebben het vormtype gedefinieerd als de VBA-constante msoTextBox (de numerieke waarde van de constante is 17)

1234567891011 Stroom dimmenSlide als SlideDim shp als vormStel currentSlide = Application.ActiveWindow.View.Slide inVoor elke shp In currentSlide.Shapes' Controleer of het vormtype msoTextBox isAls shp.Type = 17 Dan ' msoTextBox = 17'Print de tekst in de TextBox'Debug.Print shp.TextFrame2.TextRange.TextStop alsvolgende shp

Loop door alle tekstvakken in alle dia's

Nogmaals, je kunt door alle tekstvakken in de presentatie lopen door een lus toe te voegen om door alle dia's te gaan.

1234567891011 Dim stroomSlide als Slide Dim shp als ShapeVoor elke huidige Slide In ActivePresentation.SlidesVoor elke shp In currentSlide.Shapes' Controleer of het vormtype msoTextBox isAls shp.Type = 17 Dan ' msoTextBox = 17' Doe iets met de TextBox waarnaar wordt verwezen in variabele 'shp'Debug.Print shp.TextFrame2.TextRange.TextStop alsvolgende shpVolgende huidige Slide

Kopieer geselecteerde dia's naar nieuwe PPT-presentatie

Om bepaalde dia's naar een nieuwe presentatie te kopiëren, selecteert u eerst de gewenste dia's in de bestaande presentatie en voert u vervolgens de onderstaande code uit;

123456789101112131415161718 Dim stroomPresentatie als presentatieStroom dimmenSlide als SlideDim newPresentatie als presentatie' Bewaar verwijzing naar huidige presentatieSet currentPresentation = Application.ActivePresentation' Bewaar verwijzing naar huidige diaStel currentSlide = Application.ActiveWindow.View.Slide in' Nieuwe presentatie toevoegen en opslaan in een referentieStel NewPresentation = Application.Presentations.Add in' Kopieer geselecteerde dia'sSelectie.Kopiëren'Plak het in nieuwe presentatieNieuwePresentatie.Slides.Plakken

Kopieer actieve dia naar einde van actieve presentatie

12345 ' Kopieer huidige diaApplication.ActiveWindow.View.Slide.Copy'Plakken op het einde'ActivePresentation.Slides.Plakken

Handige PowerPoint-macrovoorbeelden

Hier zijn enkele nuttige macrovoorbeelden die laten zien hoe u taken moet uitvoeren. Deze zullen ook de hierboven beschreven concepten demonstreren.

Dia wijzigen tijdens diavoorstelling

1234567891011 Sub ChangeSlideDuringSlideShow()Dim SlideIndex als geheel getalDim SlideIndexVorige Als Integer' Verander huidige dia in geselecteerde dia 4 tijdens diavoorstellingSlideIndex = 4' Index van het huidige diavoorstellingsvenster is 1 in de SlideShowWindows-collectieSlideIndexPrevious = SlideShowWindows(1).View.CurrentShowPositionSlideShowWindows(1).View.GotoSlide SlideIndexEinde sub

Lettertype wijzigen op alle dia's in alle tekstvakken

123456789101112131415 Sub ChangeFontOnAllSlides()Dim mySlide als diaDim shp als vorm' Lettergrootte wijzigen op alle dia'sVoor elke mySlide In ActivePresentation.SlidesVoor elke shp in mySlide.ShapesAls shp.Type = 17 Dan ' msoTextBox = 17' Verander lettergrootte naar 24shp.TextFrame.TextRange.Font.Size = 24Stop alsvolgende shpVolgende mySlideEinde sub

Hoofdlettergebruik wijzigen van Boven naar Normaal in alle tekstvakken

123456789101112131415 Sub ChangeCaseFromUppertoNormal()Dim mySlide als diaDim shp als vorm' Wijzigen van hoofdletters naar normale letters voor alle dia'sVoor elke mySlide In ActivePresentation.SlidesVoor elke shp in mySlide.ShapesAls shp.Type = 17 Dan ' msoTextBox = 17'Verander hoofdletters in normale letters'shp.TextFrame2.TextRange.Font.Allcaps = FalseStop alsvolgende shpVolgende mySlideEinde sub

Schakel hoofdletter tussen Boven en Normaal in alle tekstvakken

12345678910111213141516 Sub ToggleCaseBetweenUpperAndNormal()Dim mySlide als diaDim shp als vorm' Schakel tussen hoofdletters en normale letters voor alle dia'sVoor elke mySlide In ActivePresentation.SlidesVoor elke shp in mySlide.ShapesAls shp.Type = 17 Dan ' msoTextBox = 17' Schakelen tussen hoofdletters en normale lettersshp.TextFrame2.TextRange.Font.Allcaps = _Niet shp.TextFrame2.TextRange.Font.AllcapsStop alsvolgende shpVolgende mySlideEinde sub

Onderstreping verwijderen uit Afdalers

In typografie is een afdaler het gedeelte van een letter dat zich onder de basislijn van een lettertype uitstrekt. In de meeste lettertypen zijn afstammelingen gereserveerd voor kleine letters zoals g, j, q, p, y en soms f.

Als je tekst onderstreept, ziet het er niet mooi uit onder afstammelingen. Hier is de code om de onderstreping van al deze tekens g, j, p, q en y in de hele presentatie te verwijderen.

1234567891011121314151617181920212223242526 Sub RemoveUnderlineFromDescenders()Dim mySlide als diaDim shp als vormDim afstammelingen_list As StringDim zin As StringDim x zo lang' Onderstrepingen verwijderen uit Descendersdownhillers_list = "gjpqy"Voor elke mySlide In ActivePresentation.SlidesVoor elke shp in mySlide.ShapesAls shp.Type = 17 Dan ' msoTextBox = 17' Onderstreping verwijderen uit letters "gjpqy"Met shp.TextFrame.TextRangezin = .TekstVoor x = 1 Naar Len(.Tekst)Als InStr(descenders_list, Mid$(phrase, x, 1)) > 0 Dan.Tekens(x, 1).Lettertype.Onderstrepen = FalseStop alsVolgende xEindigt metStop alsvolgende shpVolgende mySlideEinde sub

Animaties van alle dia's verwijderen

Gebruik de onderstaande code om alle animaties die in een presentatie zijn ingesteld te verwijderen.

123456789101112 Sub RemoveAnimationsFromAllSlides()Dim mySlide als diaDim ik zo langVoor elke mySlide In ActivePresentation.SlidesVoor i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Elke animatie verwijderen'mySlide.TimeLine.MainSequence.Item(i).Verwijderenvolgende iVolgende mySlideEinde sub

Presentatie opslaan als PDF

U kunt Active Presentation eenvoudig opslaan in PDF-formaat.

1234567891011 Sub OpslaanPresentatieAsPDF()Dim pptName As StringDim PDFName As String' PowerPoint opslaan als PDFpptName = ActivePresentation.FullName' Vervang de PowerPoint-bestandsextensie in de naam naar PDFPDFNaam = Links(pptNaam, InStr(pptNaam, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Einde sub

Tekst zoeken en vervangen

U kunt tekst zoeken en vervangen in Alle tekstvakken van alle dia's. Na de eerste instantie van de tekst die u wilt vinden (gedefinieerd door findWhat), moet u de opdracht Find doorlopen om andere instanties te vinden, indien aanwezig.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText()Dim mySlide als diaDim shp als vormDim findWhat As StringDim vervangenMet As StringDim ShpTxt als tekstbereikDim TmpTxt als tekstbereikfindWhat = "jakhals"vervangMet = "vos"'Zoeken en zoeken en vervangen'Voor elke mySlide In ActivePresentation.SlidesVoor elke shp in mySlide.ShapesAls shp.Type = 17 Dan ' msoTextBox = 17Stel ShpTxt = shp.TextFrame.TextRange in'Vind eerste aanleg van het woord 'Zoeken' (indien aanwezig)Stel TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat:=replaceWith, _WholeWords:=True)'Vind eventuele aanvullende instanties van het woord 'Zoeken' (indien aanwezig)Doen terwijl niet TmpTxt niets isStel ShpTxt = ShpTxt.Characters in (TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Stel TmpTxt = ShpTxt.Replace (findWhat, _Replacewhat:=replaceWith, _WholeWords:=True)LusStop alsvolgende shpVolgende mySlideEinde sub

Dia exporteren als afbeelding

U kunt de huidige dia (of een andere dia) exporteren als een PNG- of JPG- (JPEG) of BMP-afbeelding.

1234567891011121314 Sub ExportSlideAsImage()Dim imageType As StringDim pptName As StringDim imageName als stringDim mySlide als dia' Exporteer huidige dia naar afbeeldingimageType = "png" ' of jpg of bmppptName = ActivePresentation.FullNameimageName = Left(pptName, InStr(pptName, ".")) & imageTypeStel mySlide = Application.ActiveWindow.View.slide inmySlide.Export afbeeldingNaam, afbeeldingstypeEinde sub

Formaat van afbeelding wijzigen om volledige dia te bedekken

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide()Dim mySlide als diaDim shp als vorm' Formaat van afbeelding wijzigen naar volledige diagrootte' Hoogte en breedte van de eerste vorm op de huidige dia wijzigen' om in de afmetingen van de dia te passenStel mySlide = Application.ActiveWindow.View.slide inStel shp = mySlide.Shapes(1) in'''' Vervang twee bovenstaande uitspraken door'' de volgende verklaring als je wilt'' de momenteel geselecteerde vorm uitvouwen'' geeft een foutmelding als er niets is geselecteerd'Stel shp = ActiveWindow.Selection.ShapeRange(1) inMet shp.LockAspectRatio = False.Hoogte = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Links = 0.Bovenste = 0Eindigt metEinde sub

Sluit alle actieve diavoorstellingen af

Als u meerdere diavoorstellingen tegelijkertijd hebt geopend, kunt u ze allemaal sluiten met de onderstaande macro.

1234567 Sub ExitAllRunningSlideShows()Do While SlideShowWindows.Count> 0SlideShowWindows(1).View.ExitLusEinde sub

PowerPoint automatiseren vanuit Excel

U kunt ook verbinding maken met PowerPoint via andere toepassingen (zoals Excel en Word). Als eerste stap moet u verwijzen naar een exemplaar van PowerPoint.

Er zijn twee manieren om het te doen - vroege binding en late binding .

PowerPoint openen - Vroege binding

In ‘Early Binding’ moet je expliciet een verwijzing naar ‘Microsoft PowerPoint 16 Object Library’ (voor MS Office 2022) in de VBE (Visual Basic Editor) instellen via de optie Tools->References.

123 ' Vroege bindingDim pptApp als applicatieStel pptApp = Nieuwe PowerPoint.Applicatie in

PowerPoint openen - late binding

In 'Late Binding' wordt de applicatievariabele gedeclareerd als een object en maakt de VBA-engine tijdens runtime verbinding met de juiste applicatie.

123 'Late Binding'Dim pptApp als objectStel pptApp = CreateObject ("PowerPoint.Application") in

Applicatie zichtbaar maken

Nadat u de verwijzing naar de PowerperPoint-toepassing hebt ingesteld, moet u deze mogelijk zichtbaar maken.

1 pptApp.Visible = True

PowerPoint manipuleren

U kunt alle methoden gebruiken om presentaties te manipuleren, vanuit PowerPoint, hierboven beschreven vanuit Excel door gewoon de verwijzing naar PowerPoint toe te voegen die hierboven door u is gemaakt.

Bijvoorbeeld

1 Presentaties.Open ("Mijn Presentatie.pptx")

moet worden gebruikt vond dit leuk

1 pptApp .Presentaties.Open ("Mijn presentatie.pptx")

Sluit de applicatie

Als u klaar bent met wat u met de PowerPoint-toepassing wilde doen, moet u deze sluiten en de referentie vrijgeven.

12 pptApp.StopStel pptApp = Niets in

Kopiëren van Excel naar PowerPoint

Deze code kopieert een bereik van Excel naar PowerPoint:

Opmerking: Er is zo eenvoudig mogelijk gehouden om te laten zien hoe een bereik uit Excel met VBA naar PowerPoint kan worden gekopieerd.

12345678910111213141516171819 SubcopyRangeToPresentation()' Nieuw PowerPoint-exemplaar openenStel pptApp = CreateObject ("PowerPoint.Application") inMet pptApp'Maak een nieuwe presentatie'Stel ppt = .Presentaties.Toevoegen'Voeg een lege dia toe'Set newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12' Bereik kopiëren van actief blad in ExcelActiveSheet.Bereik ("A1:E10"). Kopiëren' Plakken in PowerPoint als afbeeldingnewSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile'Overschakelen naar PowerPoint.ActiverenEindigt metEinde sub

Veelgestelde vragen over PowerPoint VBA

Wat zijn macro's in PPT?

Een macro is een algemene term die verwijst naar een reeks programmeerinstructies die taken automatiseren. PowerPoint (PPT) Macro's automatiseren taken in PowerPoint met behulp van de VBA-programmeertaal.

Hoe gebruik ik VBA in PowerPoint?

Om VBA in PowerPoint te gebruiken, opent u de VBA-editor (ALT + F11 of Developer > Visual Basic).

Hoe maak ik een macro in PowerPoint?

1. Open de VBA-editor (ALT + F11 of Developer > Visual Basic)
2. Ga naar Invoegen > Module om een ​​codemodule te maken
3. Typ 'Sub HelloWorld' en druk op Enter
4. Typ tussen de regels 'Sub HelloWorld' en 'End Sub' 'MsgBox 'Hello World!'
5. Je hebt een macro gemaakt!
6. Druk nu op 'F5' om de Macro uit te voeren

Geschreven door: Vinamra Chandra

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave