Blog

 

Kontakt

Telefon:
+49 6151 46082-00

E-Mail:
info@capcom.de

   

Mehrere Excel-Dateien in PDF "drucken"

Avatar of CAPCom WebTeamCAPCom 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