Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Powerpoint Dateien per Excel Makro zusammenfügen

Powerpoint Dateien per Excel Makro zusammenfügen
09.04.2015 11:12:47
Jens
https://www.herber.de/bbs/user/96965.xlsm
Guten Morgen zusammen!
Ich brauche dringend Unterstützung von erfahrenen VBA Programmierern.
Es geht um folgendes. Ich habe eine ganze Reihe an Präsentationen in einem Ordner. Aus dieser Sammlung an Präsentationen werden jeweils immer 4 Dateien in unterschiedlicher Reihenfolge zusammengesetzt zu einer Gesamtpräsentation verschmolzen.
Da das ziemlich häufig passiert und sich die Zusammensetzung der Präsentation immer ändert, bietet sich ein Makro an. Leider bin ich ein absoluter Neuling in der VBA Programmierung. Glücklicherweise habe ich folgenden Foreneintrag gefunden:
(https://www.herber.de/forum/archiv/1004to1008/1004935_PPPraesentation_aus_ExcelTabelle_zusammenstellen.html#top)
Das klappt auch soweit ganz gut. Indem ich Zahlen(z.B.) links neben die Dateien in der Liste schreibe, fügt mir das Makro auch aus den entsprechenden Powerpointdateien eine Gesamtdatei zusammen.
Das Problem ist: Leider nur jeweils die erste Slide. Die Dateien haben jedoch jeweils zwischen 5 und 16 Slides.
Weiß vielleicht jemand von euch, wie ich den Quelltext so verändere, dass Excel mir alle Slides von den ausgewählten Dateien zusammenfügt?
Anbei auch mal der Quelltext, den ich verwendet habe:
Option Explicit

Sub CreateNewPowerPointPresentation()
'(C) Ramses
'Import aus einer externen Powerpoint Präsentation spezifische
'Folien und speichert diese in der angegebenen Nummerierung in
'einer neuen Präsentation
'Die Tabelle muss in A1 der aktiven Tabelle den kompletten Pfad zur importierenden Prä _
sentation haben
'In der Spalte A werden die jeweiligen durch eine Zahl markierte Folie importiert
'Die Zahlen in der Spalte A geben die Anordnung der zu importierenden Folien an
'Die zu importierende Datei wird aus den Einträgen in der Spalte C und D gebildet
Dim myPP As Object, newTarPP As Object
Dim srcFile As String, newPPtar As String, newPPspec As String, tarPPPath As String
Dim i As Long
Dim startRow As Long, endRow As Long
Dim totSlides As Long, sinSlide As Long
'Anpassungen vornehmen
'Hier beginnen die Daten in der Tabelle
startRow = 4
'Ab hier keine Änderungen mehr vornehmen
On Error GoTo myErrorHandler
'Spezifischen Dateiname abfragen
newPPspec = InputBox("Geben Sie den Dateinamen an. " & vbCrLf & vbCrLf & _
"ACHTUNG: Keine Sonderzeichen wie ""/"", ""\"", "":"", "";"", ""@"" oder ähnliches  _
verwenden." & vbCrLf & vbCrLf & _
"Die Datei wird als Präfix das Datum im Format ""YYYY-MM-DD"" haben", "Dateiname definieren" _
_
_
_
_
, "Neue Präsentation")
If StrPtr(newPPspec) = 0 Then
MsgBox "Kein Dateinamen angegeben", vbCritical + vbOKOnly, "Fehler"
Exit Sub
End If
'Neues PP Object erstellen
Set myPP = CreateObject("Powerpoint.Application")
'Quellpäsentation definieren
srcFile = Range("a1").Text
'Zielpfad automatisch ermitteln
'Allenfalls auskommentieren mit Hochkomma
tarPPPath = Range("A1").Text
If Right(tarPPPath, 1)  "\" Then
tarPPPath = tarPPPath & "\"
End If
'Neuer Name für Präsentation definieren
newPPtar = Format(Date, "YYYY-MM-DD") & newPPspec & ".ppt"
'Neue Präsentation anlegen
Set newTarPP = myPP.presentations.Add
'Letzten Eintrag in Spalte a feststellen
endRow = Cells(Rows.Count, 1).End(xlUp).Row
'Anzahl Folien feststellen für die Import Informationen in der Statusbar
totSlides = Application.WorksheetFunction.Count(Range(Cells(startRow, 1), Cells(endRow, 1))) _
_
_
_
_
'SlideCounter definieren
sinSlide = 1
With newTarPP
'SlideImport starten
For i = startRow To endRow
If Cells(i, 1)  "" Then
'Dateinamen zusammensetzen
srcFile = tarPPPath & Cells(i, 3) & Cells(i, 4)
'Datei auf existenz prüfen
'Testen ob Datei vorhanden
If Dir(srcFile) = "" Then
MsgBox "Quelldatei: " & srcFile & " wurde nicht gefunden.", vbCritical +  _
vbOKOnly, "Fehler"
Exit Sub
End If
'Benutzerhinweis
Application.StatusBar = "Import Slide: " & sinSlide & " von " & totSlides & "    _
_
_
_
_
Folien"
'Folie/n importieren
'Importsyntax lautet:
'.Slides.InsertFromFile Dateiname, An welche Position, Folie Von, Folie Bis
'"An welche Position" bedeutet hier zunächst ans Ende setzen, also ".Slides. _
Count"
'.Slides.InsertFromFile srcFile, .Slides.Count, Cells(i, 1).Value, Cells(i, 1).  _
_
_
_
_
Value
'Die hier zu importierenden Präsentationen haben NUR 1 Folie
.Slides.InsertFromFile srcFile, .Slides.Count, 1, 1
'Slidecounter hochsetzen = Hilfsvariable für Statusbar-Anzeige
sinSlide = sinSlide + 1
End If
Next i
'Benutzerhinweis
Application.StatusBar = "Die Folien werden sortiert"
sinSlide = 1
For i = startRow To endRow
If Cells(i, 1)  "" Then
'Benutzerhinweis
Application.StatusBar = "Verschiebe Folie: " & sinSlide & " von " & totSlides &  _
_
_
_
_
" Folien"
.Slides(sinSlide).moveto topos:=Cells(i, 1).Value
sinSlide = sinSlide + 1
End If
Next i
.SaveAs tarPPPath & " " & newPPtar
End With
'Benutzerhinweis
MsgBox "Slideimport vollständig durchgeführt", vbInformation + vbOKOnly, "Abschluss"
'Ausstiegspunkt für den Fehlerhandler
ErrorExit:
'Statusbar zurücksetzen
Application.StatusBar = False
Exit Sub
myErrorHandler:
MsgBox "Folgender Fehler ist aufgetreten: " & vbCrLf & Err.Number & vbCrLf & vbCrLf & Err.   _
_
_
_
_
Description, vbOKOnly + vbCritical, "Fehler"
Resume ErrorExit
End Sub

Sorry für den vielen Text schon zu so früher Stunde.
Einen schönen Tag euch! :)
Jens

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Excel Makro ?
09.04.2015 11:20:23
Nepumuk
Hallo,
was hat das mit Excel zu tun? Mach das in PowerPoint selbst.
Gruß
Nepumuk

AW: Powerpoint Dateien per Excel Makro zusammenfügen
09.04.2015 11:38:57
Markus
Hallo Jens
Versuchs mal mit dieser Zeile:
' Alle Folien importieren (ohne Angabe von Start und Anzahl)
.Slides.InsertFromFile srcFile, .Slides.Count
Du musst dann auch noch die Folgezeile die den Zähler sinSlide hochzählt anpassen.
Gruss Markus

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
09.04.2015 12:51:03
Jens
Hallo Markus!
Super! Vielen Dank für die Info :)
Ich habe es jetzt hier eingefügt:
'Neuer Name für Präsentation definieren
newPPtar = Format(Date, "YYYY-MM-DD") & newPPspec & ".ppt"
'Neue Präsentation anlegen
Set newTarPP = myPP.presentations.Add
'Letzten Eintrag in Spalte a feststellen
endRow = Cells(Rows.Count, 1).End(xlUp).Row
'Anzahl Folien feststellen für die Import Informationen in der Statusbar
totSlides = Application.WorksheetFunction.Count(Range(Cells(startRow, 1), Cells(endRow, 1)))
' Alle Folien importieren (ohne Angabe von Start und Anzahl)
.Slides.InsertFromFile srcFile, .Slides.Count
'SlideCounter definieren
sinSlide = 1
With newTarPP
'SlideImport starten
For i = startRow To endRow
If Cells(i, 1) "" Then
'Dateinamen zusammensetzen
srcFile = tarPPPath & Cells(i, 3) & Cells(i, 4)
'Datei auf existenz prüfen
'Testen ob Datei vorhanden
If Dir(srcFile) = "" Then
MsgBox "Quelldatei: " & srcFile & " wurde nicht gefunden.", vbCritical + vbOKOnly, "Fehler"
Exit Sub
End If
'Benutzerhinweis
Application.StatusBar = "Import Slide: " & sinSlide & " von " & totSlides & " Folien"
'Folie/n importieren
.Slides.InsertFromFile srcFile, .Slides.Count, Cells(i, 1).Value, Cells(i, 1).Value
'Slidecounter hochsetzen = Hilfsvariable für Statusbar-Anzeige
sinSlide = sinSlide + 1
End If
Was genau muss ich denn jetzt anpassen. Ich bin leider wirklich blutiger Anfänger :/
Viele Grüße
Jens

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
09.04.2015 13:37:40
Markus
Hallo Jens
Falls du bis morgen warten kannst, so helfe ich dir weiter, falls du das Problem bis dahin noch nicht gelöst hast.
Im Moment passt es mir nicht, da ich bei diesem schönen Wetter Paddeln gehe.
Gruss Markus

AW: Powerpoint Dateien per Excel Makro zusammenfügen
10.04.2015 15:31:07
Markus
Hallo Jens
Ich habe dir hier eine Excel-Makro-Datei hochgeladen, die die aufgelisteten Präsentation zusammenfügt.
https://www.herber.de/bbs/user/97004.xlsm
Die Mappe enthält 2 Tabellenblätter mit Listen, die dir zeigen sollten, wie du die Listen aufbauen musst, und 1 Anleitungsblatt mit ein paar zusätzlichen Infos.
Du kannst das Zusammenfügen über das Symbol "Zusammenfügen" im Menübandregister "PowerPoint" starten (wird beim Öffnen der Makro-Datei automatisch dem Menüband hinzugefügt).
Beim Zusammenfügen wird jeweils die Liste des aktiven Tabellenblatts verwendet.
Für die neue Präsentation wird der SlideMaster der ersten der aufgeführten Präsentationen verwendet. Dies kann eine Präsentation oder eine Vorlage sein.
Ich habe den Code nur mit Office 2013 getestet. Er sollte aber auch mit Office 2007 laufen.
Bitte Rückmeldung, ob das Ganze wie gewünscht funktioniert.
Gruss Markus

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
10.04.2015 16:13:37
Jens
Userbild
Hallo Markus!
Vielen vielen Dank für deine Hilfe!
Ich habe es gerade mal geteste, bekomme aber die oben genannte Fehlermeldung. Verstehst du vielleicht was ich falsch gemacht haben könnte?
Liebe Grüße
Jens

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
10.04.2015 16:24:05
Jens
Hallo Markus!
Es scheint zu gehen :) :) ;)
Ich musste zweimal auf zusammenfügen klicken. Also einmal zum öffnen einer leeren PPT und ein zweites Mal zum erstellen!
Vielen Dank nochmal! Ich bin super happy, das es schon vor dem Wochenende klappt. Jetzt kann ich damit mal ein bisschen herumspielen und probieren! Das hätte ich ohne dich nicht so schnell geschafft!
Werde jetzt glaube ich mal einen VBA Kurs machen, um mal ein bisschen zu lernen!
Liebe Grüße
Jens

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
10.04.2015 17:15:10
Markus
Hallo Jens
In der Spalte A musst du keine Nummern, sondern den Pfad eingeben (steht ja in Zelle A1). Die Reihenfolge wird durch die Liste bestimmt (Abarbeitung von oben nach unten).
Wenn du alle Dateien im gleichen Verzeichnis gespeichert hast musst du den Pfad nur in Zelle A2 angeben (wird für Folgezeilen übernommen).
1 mal auf das Symbol "Zusammenfügen" klicken genügt. Je nach PC kann es halt ein Weilchen dauern, bis PowerPoint gestartet wird. Ich habe den Cursor nicht auf Sanduhr gestellt, jetzt musst du halt deine Daumen selbst drehen, bis der Makro fertig ist :-)).
Gruss Markus

Anzeige
AW: Powerpoint Dateien per Excel Makro zusammenfügen
10.04.2015 17:19:05
Jens
Es geht sogar ziemlich flink vonstatten jetzt.
Echt klasse, diese VBA Programmierung! Ich wünschte ich würde mich bereits besser auskennen! Mir fällt jetzt bereits schon so vieles ein, was ich mir damit erleichtern könnte :)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

PowerPoint Dateien per Excel Makro zusammenfügen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Excel-Datei: Stelle sicher, dass du die Pfade zu deinen PowerPoint-Dateien in einer Excel-Tabelle hast. In Spalte A sollten die Foliennummern stehen, in Spalte C und D die Dateiinformationen.

  2. Makro in Excel einfügen: Öffne den VBA-Editor in Excel (ALT + F11) und füge den folgenden Code ein:

    Sub CreateNewPowerPointPresentation()
       Dim myPP As Object, newTarPP As Object
       Dim srcFile As String, newPPtar As String
       Dim i As Long, startRow As Long, endRow As Long, totSlides As Long
    
       'Starte PowerPoint
       Set myPP = CreateObject("Powerpoint.Application")
       myPP.Visible = True
    
       'Neues PP Object erstellen
       Set newTarPP = myPP.presentations.Add
    
       'Datenquelle definieren
       srcFile = Range("A1").Text
       endRow = Cells(Rows.Count, 1).End(xlUp).Row
    
       'Importiere Folien
       For i = 4 To endRow
           If Cells(i, 1) <> "" Then
               srcFile = Cells(i, 3).Value & Cells(i, 4).Value
               newTarPP.Slides.InsertFromFile srcFile, newTarPP.Slides.Count
           End If
       Next i
    
       'Speichern
       newPPtar = "Präsentation_" & Format(Date, "YYYY-MM-DD") & ".pptx"
       newTarPP.SaveAs "C:\" & newPPtar
    
       MsgBox "Folien wurden erfolgreich importiert!"
    End Sub
  3. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus (über das Menü oder mit ALT + F8).

  4. Ergebnis überprüfen: Deine neue PowerPoint-Präsentation mit allen Folien sollte nun erstellt sein.


Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden: Überprüfe die Pfade in den Zellen. Achte darauf, dass alle Dateien vorhanden sind.

  • Fehler: Folien werden nicht übertragen: Stelle sicher, dass du die korrekten Foliennummern in Spalte A eingetragen hast.

  • Fehler: PowerPoint öffnet nicht: Stelle sicher, dass PowerPoint installiert ist und keine anderen Instanzen geöffnet sind.


Alternative Methoden

  • PowerPoint direkt verwenden: Du kannst auch die Funktion „Folien wiederverwenden“ in PowerPoint nutzen, um mehrere Präsentationen manuell zusammenzuführen.

  • Makros in PowerPoint: Überlege, ein Makro direkt in PowerPoint zu erstellen, um die Folien aus verschiedenen Präsentationen zusammenzufügen. Dies kann über den VBA-Editor in PowerPoint geschehen.


Praktische Beispiele

  • Beispiel 1: Wenn du 2 PowerPoints zusammenfügen möchtest, kannst du die Dateinamen in die Excel-Tabelle eintragen und das oben genannte Makro anpassen, um nur diese Dateien zu importieren.

  • Beispiel 2: Wenn du mehrere PPT-Dateien hast, die du zusammenfügen möchtest, kannst du alle in der Liste angeben und das Makro wird sie hintereinander importieren.


Tipps für Profis

  • Verwendung von Schleifen: Optimiere dein Makro, indem du Schleifen verwendest, um die Effizienz zu erhöhen, besonders wenn du mit vielen Dateien arbeitest.

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung im Makro, um Probleme bei der Ausführung zu vermeiden und den Benutzer über Fehler zu informieren.

  • Speicherort anpassen: Stelle sicher, dass der Speicherort für die neue Präsentation korrekt ist, um unnötige Fehlermeldungen zu vermeiden.


FAQ: Häufige Fragen

1. Kann man 2 PowerPoints zusammenfügen? Ja, du kannst mehrere PowerPoint-Dateien in einer Excel-Liste angeben und das Makro wird sie automatisch zusammenfügen.

2. Wie fügt man einen VBA-Code in PowerPoint ein? Öffne den VBA-Editor in PowerPoint (ALT + F11), erstelle ein neues Modul und füge deinen Code dort ein.

3. Was ist eine .ppt-Datei? Eine .ppt-Datei ist das Standardformat für PowerPoint-Präsentationen. Sie enthält Folien mit Text, Bildern und anderen Elementen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige