Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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

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 :)

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige