Dies ist eine vollständige Anleitung zur Automatisierung von PowerPoint mit VBA-Makros (Visual Basic for Applications). Nachfolgend finden Sie viele nützliche Beispiele.
VBA-PDF (Kostenlose Downloads)
Laden Sie unser kostenloses Microsoft PowerPoint VBA-Tutorial herunter! Oder VBA-Tutorials für andere Office-Programme!
Herunterladen
PowerPoint VBA (Makros) Tutorial
Als makrofähige Präsentation speichern
Die Präsentation mit VBA-Code sollte "Gespeichert unter" PowerPoint Macro-Enabled Presentation (*.pptm) sein.
Aktivieren Sie die Registerkarte "Entwickler" in der Multifunktionsleiste
Sie sollten die Registerkarte Entwickler im Menüband aktivieren, bevor Sie VBA-Code erstellen. Wählen Sie dazu Datei -> Optionen, klicken Sie dann auf „Menüband anpassen“ und aktivieren Sie das Kontrollkästchen neben der Registerkarte „Entwickler“ im rechten Bereich.
PowerPoint-Makro erstellen
Dies ist ein einfaches Beispiel für ein PowerPoint VBA-Makro:
1234567891011 | Unter SavePresentationAsPDF()Dim pptName As StringPDFName als String dimmen' PowerPoint als PDF speichernpptName = ActivePresentation.FullName' PowerPoint-Dateierweiterung im Namen durch PDF ersetzenPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2End Sub |
Es speichert die aktive Präsentation als PDF. Jede Codezeile führt Folgendes aus:
- Erstellt Variablen für den PowerPoint-Namen und den PDF-Namen
- Weist der Variablen pptName den Namen der aktiven Präsentation zu
- Erstellt den vollständigen PDF-Namen
- Speichert die Präsentation als PDF
PowerPoint-Anwendung
Wenn VBA-Code in einer PowerPoint-Präsentation ausgeführt wird, ist PowerPoint-Anwendung die Standardanwendung und kann ohne expliziten Verweis bearbeitet werden. Erstellen Sie eine neue Präsentation
Verwenden Sie zum Erstellen einer Präsentation die Add-Methode der PowerPoint-Anwendung.
123 | Anwendung.Präsentationen.Hinzufügen' oder ohne ausdrücklichen HinweisPräsentationen.Hinzufügen |
Öffnen Sie eine neue Präsentation
Um eine neue und leere Präsentation zu öffnen, verwenden Sie die Add-Methode der Application.Presentations-Sammlung
1 | Präsentationen.Hinzufügen |
Öffnen Sie eine vorhandene Präsentation
Um eine bereits erstellte Präsentation zu öffnen, verwenden Sie die Open-Methode der Application.Presentations-Sammlung
1 | Präsentationen.Öffnen ("Meine Präsentation.pptx") |
Der obige Code geht davon aus, dass sich die Präsentation in demselben Verzeichnis wie die PowerPoint-Präsentation befindet, die den Code enthält.
Öffnen und einer Variablen zuweisen
Sie sollten die Präsentation, die Sie öffnen, einer Variablen zuweisen, damit Sie sie Ihren Anforderungen entsprechend bearbeiten können.
12 | Dim ppt als PräsentationSet ppt = Presentations.Open("Meine Präsentation.pptx") |
Siehe Aktive Präsentation
Verwenden Sie die Referenz ActivePrentation, um die in der GUI aktive Präsentation zu manipulieren, wenn der VBA-Code ausgeführt wird.
12 | ' Den Namen der ActivePresentation im Direktfenster ausgebenDebug.Print ActivePresentation.Name |
Aktuelle Präsentation speichern
Die folgende Anweisung speichert die aktive Präsentation, wenn sie zuvor gespeichert wurde. Wenn es nicht gespeichert wurde, werden Sie mit dem Dialogfeld "Speichern unter" aufgefordert.
1 | ActivePresentation.Speichern |
Aktuelle Präsentation schließen
Die folgende Anweisung schließt die aktive Präsentation, auch wenn sie nach der letzten Bearbeitung nicht gespeichert wurde.
1 | ActivePresentation.Schließen |
Nützliche Referenzen
Vorhandene Präsentation (nach Name) zu Variable zuweisen
12 | Dim myPresentationByName als PräsentationSet myPresentationByName = Application.Presentations("Meine Präsentation") |
Aktive Folie einer Variablen zuweisen
12 | Strom dimmenSlide As SlideSet currentSlide = Application.ActiveWindow.View.Slide |
Folie nach Index zu Variable zuweisen
12 | mySlide als Folie dimmenSet mySlide = ActivePresentation.Slides(11) |
Anzahl der Folien zählen
12 | SlideCount As Long dimmenslideCount = ActivePresentation.Slides.Count |
Folienindexnummer der aktuellen Folie abrufen
12 | Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Fügen Sie am Ende der Diashow eine leere Folie hinzu
1234567 | SlideCount As Long dimmenDim newSlide as SlideslideCount = ActivePresentation.Slides.CountSet newSlide = ActivePresentation.Slides.Add(slideCount + 1, 12)' oder als ppLayoutBlank = 12Set newSlide = ActivePresentation.Slides.Add(slideCount + 1, ppLayoutBlank) |
Folie nach aktueller Folie hinzufügen
12345 | Dim newSlide As SlideDim currentSlideIndex als IntegercurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexSet newSlide = ActivePresentation.Slides.Add(currentSlideIndex, ppLayoutBlank) |
Eine Folie löschen
1234 | Dim currentSlideIndex als IntegercurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides(currentSlideIndex).Delete |
Gehe zu einer bestimmten Folie
12 | ' Dies bringt Sie zu Folie Nummer 4Application.ActiveWindow.View.GotoSlide (4) |
Folie verschieben
Sie können eine Folie von ihrer alten Position an die neue Position verschieben
123456 | ' Von Folie 3 zur ersten Folie wechselnDim oldPosition als Integer, dim newPosition als IntegeraltePosition = 3neuePosition = 1ActivePresentation.Slides(oldPosition).MoveTo toPos:=newPosition |
Alle Folien durchlaufen
Sie können mit jeder Folie etwas tun oder alle Folien durchgehen, um einige Folien zu finden und mit dem Code etwas zu unternehmen.
123456 | mySlide als Slide dimmenFür jede mySlide in ActivePresentation.Slides' Etwas mit der aktuellen Folie machen, auf die in der Variablen 'mySlide' verwiesen wird' Debug.Print mySlide.NameNächste Folie |
Durchlaufen Sie alle Formen der aktiven Folie
Die Leistungsfähigkeit von PowerPoint kann durch die Verwendung von „Formen“ realisiert werden. Der folgende Code durchläuft alle Formen auf der aktuellen Folie, sodass Sie sie nach Belieben bearbeiten können.
123456789 | Aktuelle Folie als Folie dimmenDim shp als ShapeSet currentSlide = Application.ActiveWindow.View.SlideFür jeden shp In currentSlide.Shapes' Etwas mit der aktuellen Form machen, auf die in der Variablen 'shp' Bezug genommen wird' Drucken Sie zum Beispiel den Namen der Form im DirektfensterDebug.Print shp.NameNächster shp |
Durchlaufen aller Formen in allen Folien
Sie können alle Formen in der Präsentation durchlaufen, indem Sie eine Schleife hinzufügen, um alle Folien zu durchlaufen.
123456789 | Aktuelle Folie als Folie dimmenDim shp als ShapeFür jede aktuelle Folie in ActivePresentation.SlidesFür jeden shp In currentSlide.Shapes' Etwas mit der aktuellen Form machen, auf die in der Variablen 'shp' Bezug genommen wirdDebug.Print shp.NameNächster shpNächste aktuelle Folie |
Durchlaufen Sie alle Textboxen der aktiven Folie
TextBoxen sind die am häufigsten verwendete Form in PowerPoint-Präsentationen. Sie können alle Textfelder durchlaufen, indem Sie ein Häkchen für "Formtyp" hinzufügen. TexBoxen haben den Formtyp, der als VBA-Konstante msoTextBox definiert ist (der numerische Wert der Konstante ist 17).
1234567891011 | Aktuelle Folie als Folie dimmenDim shp als ShapeSet currentSlide = Application.ActiveWindow.View.SlideFür jeden shp In currentSlide.Shapes' Überprüfen Sie, ob der Formtyp msoTextBox istWenn shp.Type = 17 Then 'msoTextBox = 17'Text in der TextBox druckenDebug.Print shp.TextFrame2.TextRange.TextEnde WennNächster shp |
Durchlaufen Sie alle Textboxen in allen Folien
Auch hier können Sie alle Textfelder in der Präsentation durchlaufen, indem Sie eine Schleife hinzufügen, um alle Folien zu durchlaufen.
1234567891011 | Dim currentSlide as Slide Dim shp as ShapeFür jede aktuelle Folie in ActivePresentation.SlidesFür jeden shp In currentSlide.Shapes' Überprüfen Sie, ob der Formtyp msoTextBox istWenn shp.Type = 17 Then 'msoTextBox = 17' Etwas mit der TextBox machen, auf die in der Variable 'shp' verwiesen wirdDebug.Print shp.TextFrame2.TextRange.TextEnde WennNächster shpNächste aktuelle Folie |
Ausgewählte Folien in neue PPT-Präsentation kopieren
Um bestimmte Folien in eine neue Präsentation zu kopieren, wählen Sie zuerst die gewünschten Folien in der vorhandenen Präsentation aus und führen Sie dann den folgenden Code aus;
123456789101112131415161718 | Aktuelle Präsentation als Präsentation dimmenAktuelle Folie als Folie dimmenDim newPräsentation als Präsentation' Verweis auf aktuelle Präsentation speichernSet currentPresentation = Application.ActivePresentation' Verweis auf aktuelle Folie speichernSet currentSlide = Application.ActiveWindow.View.Slide' Neue Präsentation hinzufügen und als Referenz speichernSet NewPresentation = Application.Presentations.Add' Ausgewählte Folien kopierenAuswahl.Kopie'In neue Präsentation einfügenNeuePräsentation.Folien.Einfügen |
Aktive Folie an das Ende der aktiven Präsentation kopieren
12345 | ' Aktuelle Folie kopierenApplication.ActiveWindow.View.Slide.Copy'Einfügen am EndeActivePresentation.Slides.Paste |
Nützliche PowerPoint-Makro-Beispiele
Hier sind einige nützliche Makrobeispiele, die zeigen, wie Aufgaben ausgeführt werden. Diese werden auch die oben beschriebenen Konzepte demonstrieren.
Dia während der Diashow wechseln
1234567891011 | Sub ChangeSlideDuringSlideShow()Dim SlideIndex As IntegerDim SlideIndexPrevious As Integer' Während der Diashow das aktuelle Dia in das ausgewählte Dia 4 ändernSlideIndex = 4' Index des aktuellen Diashow-Fensters ist 1 in der SlideShowWindows-SammlungSlideIndexPrevious = SlideShowWindows(1).View.CurrentShowPositionSlideShowWindows(1).View.GotoSlide SlideIndexEnd Sub |
Ändern Sie die Schriftart auf allen Folien in allen Textfeldern
123456789101112131415 | Sub ChangeFontOnAllSlides()mySlide als Folie dimmenshp als Form dimmen'Schriftgröße auf allen Folien ändernFür jede mySlide in ActivePresentation.SlidesFür jeden shp in mySlide.ShapesWenn shp.Type = 17 Then 'msoTextBox = 17'Schriftgröße ändern auf 24shp.TextFrame.TextRange.Font.Size = 24Ende WennNächster shpNächste mySlideEnd Sub |
Ändern Sie die Groß-/Kleinschreibung in allen Textfeldern von Groß auf Normal
123456789101112131415 | Sub ChangeCaseFromUppertoNormal()mySlide als Folie dimmenshp als Form dimmen' Wechsel von Groß- in Großbuchstaben für alle FolienFür jede mySlide in ActivePresentation.SlidesFür jeden shp in mySlide.ShapesWenn shp.Type = 17 Then 'msoTextBox = 17' Großbuchstaben in Normalbuchstaben ändernshp.TextFrame2.TextRange.Font.Allcaps = FalseEnde WennNächster shpNächste mySlideEnd Sub |
Umschalten zwischen Groß- und Kleinschreibung in allen Textfeldern
12345678910111213141516 | Sub ToggleCaseBetweenUpperAndNormal()mySlide als Folie dimmenshp als Form dimmen' Umschalten zwischen Groß- und Normalschreibung für alle FolienFür jede mySlide in ActivePresentation.SlidesFür jeden shp in mySlide.ShapesWenn shp.Type = 17 Then 'msoTextBox = 17' Umschalten zwischen Groß- und Normalschreibungshp.TextFrame2.TextRange.Font.Allcaps = _Nicht shp.TextFrame2.TextRange.Font.AllcapsEnde WennNächster shpNächste mySlideEnd Sub |
Unterstreichung von Unterlängen entfernen
In der Typografie ist eine Unterlänge der Teil eines Buchstabens, der sich unter die Grundlinie einer Schriftart erstreckt. In den meisten Schriftarten sind Unterlängen für Kleinbuchstaben wie g, j, q, p, y und manchmal f reserviert.
Wenn Sie Text unterstreichen, sieht es unter Unterlängen nicht gut aus. Hier ist der Code zum Entfernen der Unterstreichung von all diesen Zeichen g, j, p, q und y in der gesamten Präsentation.
1234567891011121314151617181920212223242526 | Sub RemoveUnderlineFromDescenders()mySlide als Folie dimmenshp als Form dimmenAbsteigende_Liste als String dimmenDim Phrase As StringDim x As Long' Unterstreichungen von Descenders entfernendescenders_list = "gjpqy"Für jede mySlide in ActivePresentation.SlidesFür jeden shp in mySlide.ShapesWenn shp.Type = 17 Then 'msoTextBox = 17' Unterstreichung von Buchstaben entfernen "gjpqy"Mit shp.TextFrame.TextRangePhrase = .TextFür x = 1 zu Len(.Text)If InStr(descenders_list, Mid$(phrase, x, 1)) > 0 Then.Characters(x, 1).Font.Underline = FalseEnde WennNächstes xEnde mitEnde WennNächster shpNächste mySlideEnd Sub |
Animationen von allen Folien entfernen
Verwenden Sie den folgenden Code, um alle in einer Präsentation festgelegten Animationen zu entfernen.
123456789101112 | Sub RemoveAnimationsFromAllSlides()mySlide als Folie dimmenDim ich so langFür jede mySlide in ActivePresentation.SlidesFor i = mySlide.TimeLine.MainSequence.Count To 1 Step -1'Jede Animation entfernenmySlide.TimeLine.MainSequence.Item(i).DeleteAls nächstesNächste mySlideEnd Sub |
Präsentation als PDF speichern
Sie können Active Presentation ganz einfach im PDF-Format speichern.
1234567891011 | Unter SavePresentationAsPDF()Dim pptName As StringPDFName als String dimmen' PowerPoint als PDF speichernpptName = ActivePresentation.FullName' PowerPoint-Dateierweiterung im Namen durch PDF ersetzenPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2End Sub |
Text suchen und ersetzen
Sie können Text in All TextBoxes of All Slides suchen und ersetzen. Nach der ersten Instanz des zu suchenden Textes (definiert durch findWhat) müssen Sie den Find-Befehl durchlaufen, um ggf. weitere Instanzen zu finden.
123456789101112131415161718192021222324252627282930313233 | Unter FindAndReplaceText()mySlide als Folie dimmenshp als Form dimmenDim findWhat As StringDim replaceWith As StringDim ShpTxt As TextRangeDim TmpTxt As TextRangefindWhat = "Schakal"ErsetzenDurch = "Fuchs"' Suchen und Suchen und ErsetzenFür jede mySlide in ActivePresentation.SlidesFür jeden shp in mySlide.ShapesWenn shp.Type = 17 Then 'msoTextBox = 17Setze ShpTxt = shp.TextFrame.TextRange'Find First Instance of "Find"-Wort (falls vorhanden)Setze TmpTxt = ShpTxt.Replace(findWhat, _Ersetzenwas:=ersetzenDurch, _Ganze Wörter:=wahr)'Find Any Zusätzliche Instanzen von "Find"-Wort (falls vorhanden)Tun, während nicht TmpTxt ist nichtsSetze ShpTxt = ShpTxt.Characters(TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Setze TmpTxt = ShpTxt.Replace(findWhat, _Ersetzenwas:=ersetzenDurch, _Ganze Wörter:=wahr)SchleifeEnde WennNächster shpNächste mySlideEnd Sub |
Folie als Bild exportieren
Sie können die aktuelle SLide (oder jede andere Folie) als PNG- oder JPG- (JPEG) oder BMP-Bild exportieren.
1234567891011121314 | UnterexportSlideAsImage()Dim imageType As StringDim pptName As StringDim imageName As StringmySlide als Folie dimmen' Aktuelle Folie als Bild exportierenimageType = "png" ' oder jpg oder bmppptName = ActivePresentation.FullNameimageName = Left(pptName, InStr(pptName, ".")) & imageTypeSet mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeEnd Sub |
Bildgröße ändern, um die gesamte Folie abzudecken
1234567891011121314151617181920212223242526 | Unter ResizeImageToCoverFullSlide()mySlide als Folie dimmenshp als Form dimmen'Bildgröße auf volle Diagröße ändern' Höhe und Breite der ersten Form auf der aktuellen Folie ändern' passend zu den DiamaßenSet mySlide = Application.ActiveWindow.View.slideSetze shp = mySlide.Shapes(1)'''' Ersetzen Sie die beiden obigen Statements durch'' die folgende Aussage, wenn Sie möchten'' Erweitert die aktuell ausgewählte Form'' gibt einen Fehler aus, wenn nichts ausgewählt ist'shp setzen = ActiveWindow.Selection.ShapeRange(1)Mit shp.LockAspectRatio = False.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Links = 0.Oben = 0Ende mitEnd Sub |
Alle laufenden Diashows beenden
Wenn Sie mehrere Diashows gleichzeitig geöffnet haben, können Sie alle mit dem folgenden Makro schließen.
1234567 | Sub ExitAllRunningSlideShows()Während SlideShowWindows.Count > 0 . ausführenDiashowWindows(1).View.ExitSchleifeEnd Sub |
PowerPoint aus Excel automatisieren
Sie können auch über andere Anwendungen (wie Excel und Word) eine Verbindung zu PowerPoint herstellen. Als ersten Schritt müssen Sie auf eine Instanz von PowerPoint verweisen.
Es gibt zwei Möglichkeiten, dies zu tun - frühe Bindung und späte Bindung .
PowerPoint öffnen - Frühe Bindung
In „Early Binding“ müssen Sie in der VBE (Visual Basic Editor) über die Option Tools->References explizit einen Verweis auf die „Microsoft PowerPoint 16 Object Library“ (für MS Office 2022) setzen.
123 | 'Frühe BindungDim pptApp als AnwendungSet pptApp = Neue PowerPoint.Application |
PowerPoint öffnen – späte Bindung
Bei „Late Binding“ wird die Anwendungsvariable als Objekt deklariert und die VBA-Engine verbindet sich zur Laufzeit mit der richtigen Anwendung.
123 | 'Späte BindungpptApp als Objekt dimmenSet pptApp = CreateObject("PowerPoint.Application") |
Bewerbung sichtbar machen
Nachdem Sie den Verweis auf die PowerperPoint-Anwendung festgelegt haben, müssen Sie ihn möglicherweise sichtbar machen.
1 | pptApp.Visible = True |
PowerPoint manipulieren
Sie können alle oben beschriebenen Methoden zum Bearbeiten von Präsentationen in PowerPoint verwenden, indem Sie einfach den von Ihnen oben erstellten Verweis auf PowerPoint hinzufügen.
Zum Beispiel
1 | Präsentationen.Öffnen ("Meine Präsentation.pptx") |
muss so verwendet werden
1 | pptApp .Presentations.Open ("Meine Präsentation.pptx") |
Schließen Sie die Anwendung
Wenn Sie mit der PowerPoint-Anwendung fertig sind, müssen Sie sie schließen und sollten die Referenz freigeben.
12 | pptApp.BeendenSetze pptApp = Nichts |
Von Excel nach PowerPoint kopieren
Dieser Code kopiert einen Bereich von Excel nach PowerPoint:
Notiz: Es wurde so einfach wie möglich gehalten, wie ein Bereich aus Excel mit VBA nach PowerPoint kopiert werden kann.
12345678910111213141516171819 | UnterkopieRangeToPresentation()'Neue PowerPoint-Instanz öffnenSet pptApp = CreateObject("PowerPoint.Application")Mit pptApp'Erstelle eine neue PräsentationSetze ppt = .Präsentationen.Hinzufügen'Eine leere Folie hinzufügenSetze newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12'Bereich aus aktivem Blatt in Excel kopierenActiveSheet.Range("A1:E10").Copy' Als Bild in Powerpoint einfügennewSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile'Zu PowerPoint wechseln.Aktivieren SieEnde mitEnd Sub |
Häufig gestellte Fragen zu PowerPoint VBA
Was sind Makros in PPT?
Ein Makro ist ein allgemeiner Begriff, der sich auf eine Reihe von Programmieranweisungen bezieht, die Aufgaben automatisieren. PowerPoint (PPT)-Makros automatisieren Aufgaben in PowerPoint mithilfe der Programmiersprache VBA.
Wie verwende ich VBA in PowerPoint?
Um VBA in PowerPoint zu verwenden, öffnen Sie den VBA-Editor (ALT + F11 oder Entwickler > Visual Basic).
Wie erstelle ich ein Makro in PowerPoint?
1. Öffnen Sie den VBA-Editor (ALT + F11 oder Entwickler > Visual Basic)
2. Gehen Sie zu Einfügen > Modul, um ein Codemodul zu erstellen
3. Geben Sie „Sub HelloWorld“ ein und drücken Sie die Eingabetaste
4. Geben Sie zwischen den Zeilen ‚Sub HelloWorld‘ und ‚End Sub‘ ‚MsgBox ‚Hello World!‘ ein.
5. Sie haben ein Makro erstellt!
6. Drücken Sie nun 'F5', um das Makro auszuführen
Geschrieben von: Vinamra Chandra