Mehrere Excel-Dateien in PDF "drucken"
CAPCom WebTeam - 23. Juni 2023 - Tipps & Tricks
Wer regelmäßig mehrere Excel-Sheets (mit mehreren Tabellenblättern) in PDF-Dokumente zusammenfassen möchte, für den haben wir hier etwas: Ein kleines VBA Makro, dass das Erzeugen von PDFs aus mehreren Excels erleichtert.
Das Problem
Wir standen aktuell vor der Aufgabenstellung, dass wir mehrmals im Quartal einen Bericht über den Verlauf einer Dokumentation abgeben sollten. Für die Dokumentation haben wir uns für eine Excelstruktur entschieden.
Um nun nicht für jeden Zwischenbericht etliche Excel-Sheets ausdrucken zu müssen (Stichwort Green-IT und Kostenreduktion) haben wir uns für die PDF-Variante entschieden. Was für die Papierform noch einfach geht (alles Markieren -> rechte Maustaste -> Drucken) geht für die PDF-Version schon nicht mehr so einfach. Nach kurzer Suche in Excel und im Netz stellte sich raus: Ein Makro muss her! Leider haben wir auf Anhieb kein funktionierendes gefunden. Also haben wir kurzerhand selbst eines geschrieben.
Das VBA Makro
Mit diesem VBA Makro müsst Ihr nicht mehr jedes einzelne Excel zum Drucken oder Veröffentlichen öffnen und es wird auch nicht mehr gefragt ob man die Änderungen speichern möchte, nur weil man den "Drucker" auf PDF umgestellt hat.
Das VBA Makro funktioniert in allen Excel Versionen ab 2010.
Sub AlleDrucken() 'Aus welchen Zellen werden die Informationen bezogen 'Verbessert die Struktur des Excel-Makros, eigene Modifikatioen sind leichter einzupflegen Const z_Pfad As String = "C3" 'in dieser Zelle stehen die Angaben zum Pfad, an welcher Stelle die Quell Excels liegen Const z_Filter As String = "C4" 'in dieser Zelle stehen die Angaben zum Filter, welcher eine Einschränkung der betrachteten Dateien ermöglicht Const z_Endung As String = "C5" 'in dieser Zelle stehen die Angaben zur Endung der Quelldatei 'Konstante Const c_OutOrdnerName As String = "PDF" 'Hier kann der Name eingestellt werden wie der Zielordner heißen soll + Datum und Uhrzeit 'Variablen Dim v_AktuelleDatei As String 'Name der aktuelle Datei Dim v_Output As String 'Pfad der für die Ausgabe der PDFs zusammen gebaut wird Dim v_OutOrdner As String 'Name des neu anzulegenden Ordners (im Quellordner) für die Ausgabe 'Main Application.ScreenUpdating = False 'schaltet die Aktualisierung des Inhalts der Excel ab v_OutOrdner = "PDF_" & Format(Time, "YYYYMMDD-hhmmss") & "\" 'ergänzt den Zielordner um das aktuelle Datum und Uhrzeit MkDir (Range(z_Pfad).Value & v_OutOrdner) 'Erstellt den Ordner für die Ausgabe im Quellverzeichnis v_AktuelleDatei = Dir(Range(z_Pfad).Value & Range(z_Filter).Value & Range(z_Endung).Value) 'Gibt den ersten Dateinamen wieder, der auf die angegebenen Filterkriterien passt While v_AktuelleDatei <> "" 'Eine Schleife die so lange läuft bis kein weiteres Excel mehr auf die Filterkriteren zutrifft OutFile = Range(z_Pfad).Value & v_OutOrdner & Replace(v_AktuelleDatei, Range(z_Endung).Value, ".pdf") 'Pfad und Endung für die Ausgabe der Datei werden angepasst Workbooks.Open Filename:=Range(z_Pfad).Value & v_AktuelleDatei, UpdateLinks:=False 'Öffnen der zu druckenden Excel ohne den Inhalt zu aktualisieren ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=OutFile 'Export der Excels als PDF. Hier wären auch alternative "Druck" bzw Export Optionen einzustellen ActiveWorkbook.Close savechanges:=False 'Excel ohne zu speichern schließen v_AktuelleDatei = Dir 'Übergibt den Dateinamen der nächsten Excel die auf die Filterkriterien zutrifft Wend Application.ScreenUpdating = True 'Ab hier werden Änderungen in der Excel wieder angezeigt End Sub
Das Excel
Wichtig wäre noch zu erwähnen, dass der Pfad (C3) mit einem "\" enden sollte. Das Layout könnt Ihr dank z_Pfad, z_Filter und z_Endung leicht nach eurem Geschmack anpassen.
3 Gründe, warum Ihre Excel-Anwendung so kompliziert ist: mehr Informationen dazu hier.
Die Kommentarfunktion ist für diesen Artikel deaktiviert.
0 Kommentare