Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Flexibles Drucken und speichern als pdf im Makro

Flexibles Drucken und speichern als pdf im Makro
26.09.2018 21:59:58
John
Moin zusammen,
mein erster Beitrag im Forum und Danke im Voraus an die hoffentlich kompetenten Antworten.
Ich habe per Makro eine Routine erstellt, mit der ich aus Bestandsdaten, die ich jeweils nach bestimmten Kriterien (Kundennummer) automatisch im Makro filtere und die dann vorne in ein Deckblatt übertragen werden, welches einzeln ausgedruckt und auch parallel einzeln als PDF gespeichert werden soll. Insgesamt reden wir von etwa 100 daraus resultierenden Ausdrucken bzw. pdf-Dateien.
Eine erste Schwierigkeit besteht darin, dass das Deckblatt unterschiedlich lang im Ausdruck sein kann (Minimum eine, Maximum 7 Seiten), was von der Anzahl der aus dem Basisdatenblatt übertragenen Daten abhängt. Je nach Länge/Anzahl der Datensätze soll am Ende des Deckblatts am Fuße der letzten Seite eine Summe und einige Zellformatierungen stattfinden. Das klappt auch halbwegs, wobei auch da noch irgendwo ein Bug steckt.
Größeres Problem für mich ist der Code im VBA, der den jeweiligen Ausdruck erstellt (hier habe ich in Zelle A1 bereits ein variables Feld, welches je nach Anzahl der Datensätze den Druckbereich verändern soll z.B. A1:F50 bei 33 Datensätzen oder A1:F75 bei 58 DS) Das Ausdrucken des dadurch variablen Druckbereichs klappt aber trotz GIDF nicht korrekt und bei der Speicherung gibt es ebenfalls Probleme.....auch wenn der Part Speichern zumindest z.T. bedingt funktioniert.
Wie würdet Ihr das Druckthema und das jeweilige Speichern lösen?
Thx
John
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Flexibles Drucken und speichern als pdf im Makro
28.09.2018 01:31:44
fcs
Hallo John,
Drucken und speichern als PDF läuft eigentlich simple up.
Immer nachdem die Daten zu einem Filter + die Summenzeile berechnet sind wird die Letzte Zeile mit Inhalt ermittelt und dann der Druckbereich neu gesetzt.
Danach wird dann gedruckt und das PDF gespeichert.
Das kann man auch schön in eine Subroutine auslagern.
Sieht dann etwa wie folgt aus.
Blattnamen, Breite des Druckbereichs, Pfad für PDF und Name der PDF-Dateien musst du an deine Anforderungen anpassen.
LG
Franz

Sub Datenaufbereiten()
Dim I As Integer
For I = 1 To 1
'Code zum eintragen der Daten ins Deckblatt
Call Deckblatt_Drucken_PDF_Speichern( _
pdfName:="XXXXXX" & Format(Date, "YYYY-MM-DD"))
Next
End Sub
Sub Deckblatt_Drucken_PDF_Speichern(pdfName As String)
Dim wks As Worksheet
Dim Zeile_L As Long
Dim PfadPDF As String
Set wks = Worksheets("Deckblatt")
PfadPDF = ThisWorkbook.Path & "\" 'Pfad
With wks
Zeile_L = .Cells.Find(What:="*", after:=.Cells(1, 1), LookIn:=xlValues, _
lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
.PageSetup.PrintArea = "A1:H" & Zeile_L 'Spalte H anpassen!
.PrintPreview 'zum Testen
'        .PrintOut
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PfadPDF & pdfName & ".pdf", _
Quality:=xlQualityStandard, Includedocproperties:=False, _
Ignoreprintareas:=False, Openafterpublish:=False
End With
End Sub

Anzeige
;

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

Flexibles Drucken und Speichern als PDF im Makro


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsm)“ und wähle „Einfügen“ > „Modul“.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub Datenaufbereiten()
        Dim I As Integer
        For I = 1 To 1
            'Code zum eintragen der Daten ins Deckblatt
            Call Deckblatt_Drucken_PDF_Speichern( _
                pdfName:="XXXXXX" & Format(Date, "YYYY-MM-DD"))
        Next
    End Sub
    
    Sub Deckblatt_Drucken_PDF_Speichern(pdfName As String)
        Dim wks As Worksheet
        Dim Zeile_L As Long
        Dim PfadPDF As String
        Set wks = Worksheets("Deckblatt")
        PfadPDF = ThisWorkbook.Path & "\" 'Pfad
        With wks
            Zeile_L = .Cells.Find(What:="*", after:=.Cells(1, 1), LookIn:=xlValues, _
            lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
            .PageSetup.PrintArea = "A1:H" & Zeile_L 'Spalte H anpassen!
            .PrintPreview 'zum Testen
            '.PrintOut 'Aktivieren, um zu drucken
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=PfadPDF & pdfName & ".pdf", _
            Quality:=xlQualityStandard, Includedocproperties:=False, _
            Ignoreprintareas:=False, Openafterpublish:=False
        End With
    End Sub
  4. Daten eintragen: Stelle sicher, dass dein Deckblatt bereits die notwendigen Daten enthält.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.


Häufige Fehler und Lösungen

  • Fehler beim Druckbereich: Wenn der Druckbereich nicht korrekt gesetzt ist, überprüfe, ob die Zeile mit Inhalt richtig ermittelt wird. Stelle sicher, dass die .Cells.Find-Methode korrekt funktioniert.

  • PDF wird nicht gespeichert: Wenn das PDF nicht gespeichert wird, überprüfe den angegebenen Pfad. Der Pfad muss existieren, und Excel benötigt Schreibrechte.

  • Variabler Druckbereich funktioniert nicht: Achte darauf, dass die Variable Zeile_L korrekt ermittelt wird. Teste dies, indem du den Wert in einer MessageBox ausgibst.


Alternative Methoden

  • Direkt über Excel: Du kannst auch direkt über das Menü „Datei“ > „Speichern unter“ die Option „PDF“ auswählen, um eine Datei zu erstellen. Dies eignet sich gut für manuelle Prozesse.

  • Excel-Drucker: Nutze virtuelle Drucker wie „Adobe PDF“ oder „Microsoft Print to PDF“, um deine Arbeitsblätter als PDF zu speichern.


Praktische Beispiele

  1. PDF aus Excel erstellen: Verwende das oben genannte Makro, um eine PDF-Datei aus einem spezifischen Druckbereich zu erstellen.
  2. Drucken als PDF speichern: Du kannst die .PrintOut-Methode aktivieren, um die Datei sowohl zu drucken als auch zu speichern.

Tipps für Profis

  • Makros optimieren: Lagere wiederkehrende Aufgaben in Subroutinen aus, um deinen Code übersichtlicher und wartungsfreundlicher zu gestalten.

  • Fehlerprotokollierung: Implementiere eine Fehlerbehandlung in deinen Makros, um Probleme beim Drucken als PDF zu identifizieren und zu beheben.

  • Druckbereich anpassen: Verwende PageSetup-Eigenschaften, um die Größe deines PDFs anzupassen, bevor du es speicherst.


FAQ: Häufige Fragen

1. Wie kann ich den Druckbereich dynamisch anpassen?
Du kannst die .Cells.Find-Methode verwenden, um die letzte Zeile mit Inhalt zu ermitteln und den Druckbereich entsprechend setzen.

2. Wie speichere ich ein Bild als PDF?
Du kannst ein .jpg-Bild in Excel einfügen und es dann mit der .ExportAsFixedFormat-Methode als PDF speichern.

3. Gibt es einen Unterschied zwischen „Drucken als PDF speichern“ und „PDF erstellen“?
Ja, „Drucken als PDF speichern“ bezieht sich auf das Drucken über einen virtuellen Drucker, während „PDF erstellen“ direkt aus Excel heraus erfolgt.

4. Wie kann ich mehrere PDFs nacheinander erstellen?
Du kannst eine Schleife in dein Makro einfügen, um mehrere PDF-Dateien aus verschiedenen Datenbereichen zu erstellen.

5. Wie kann ich die Größe des PDFs anpassen?
Nutze die .PageSetup-Eigenschaften, um die Größe und den Druckbereich entsprechend deinen Bedürfnissen anzupassen.

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