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