PowerPoint VBA-Makro-Beispiele und Tutorial

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

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave