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

Forumthread: Bestimmte Arbeitsblätter per Makro als PDF drucken

Bestimmte Arbeitsblätter per Makro als PDF drucken
09.06.2006 14:28:02
Michael
Hallo xlGemeinde,
da ich voll die Null in VBA bin. Bräuchte ich wieder Eure Hilfe.
Wie kann ich per Makro bzw. wie muss der Code aussehen, wenn ich mehrere Blätter einer Mappe als PDF drucken will.
Am besten sollte der Dateiname aus einem gewissen Vorgabe bestehen z.B. "Bericht_" und den Monat gebe ich dann im Speichern unter Menü selbst an. Also das die fertige PDF Datei nachher dann Bericht_Mai2006.pdf heisst.
Besten Dank für Eure Hilfe
Gruß
Michael
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Arbeitsblätter per Makro als PDF drucken
09.06.2006 15:26:02
Bernhard
Hallo Michael,
schau mal, ob das das ist, was du brauchst. Ich habe die Funktion mal geschrieben
um das aktuelle Sheet auf unserem PDF Drucker "Ghostscript PDF Writer 1.2 auf RPT1:"
(den Namen + Anschluss musst du natürlich ersetzen) rauszulassen

Sub Abspeichern_Printen()
Dim strTitel As String
Dim strRelPfad As String
Dim strPrinter As String
' setzt den alten Drucker.
strPrinter = Application.ActivePrinter
strTitel = InputBox("Unter welchem Titel abspeichern? (ohne .pdf)", , "Bericht_" & activesheet.name())
strRelPfad = "c:\" & strTitel
Application.ActivePrinter = "Ghostscript PDF Writer 1.2 auf RPT1:" 'Druckername UND Anschluss
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, PrintToFile:=True, PrToFileName:=strRelPfad
Application.ActivePrinter = strPrinter
End Sub

Wenn das mit der automatischen Benennung des PrinttoFile bei dem PDF Drucker
nicht funktioniert (hats bei mir auch nicht), dann
hilft
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Da musst du dann den Namen per Hand eingeben.
Viel Erfolg
Bernhard
Anzeige
AW: Bestimmte Arbeitsblätter per Makro als PDF drucken
14.06.2006 13:41:45
Michael
Hallo Bernhard,
ich habe folgendes jetzt zusammengestellt. Funktioniert soweit ganz bis das ich den Speicherort der Datei nicht bestimmten kann. d.h. er speichert nicht auf C:\ ab
Gruß
Michael

Sub PDF_drucken()
Dim strRelPfad As String
Dim strTitel As String
strTitel = InputBox("Unter welchem Titel abspeichern? (ohne .pdf)", , "RR_BAH_")
strRelPfad = "c:\" & strTitel
Sheets(Array("Title", "Overview_NS_Month", "Overview_NS_YTD", "Overview_OI_Month", _
"Overview_OI_YTD", "World_NS_Market", "EU_NS_Market", "AM_NS_Market", _
"AAA_NS_Market")).Select
Sheets("Title").Activate
'  ActiveWindow.ScrollWorkbookTabs Sheets:=1
'  ActiveWindow.ScrollWorkbookTabs Sheets:=1
Application.ActivePrinter = "Acrobat PDFWriter auf LPT1:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, printtofile:=True, PrToFileName:=strRelPfad, ActivePrinter:= _
"Acrobat PDFWriter auf LPT1:"
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Arbeitsblätter per Makro als PDF drucken


Schritt-für-Schritt-Anleitung

Um mehrere Arbeitsblätter in Excel als PDF zu drucken, kannst Du ein Makro verwenden. Hier ist eine einfache Anleitung, wie Du dies mit VBA (Visual Basic for Applications) umsetzen kannst:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das Du als PDF drucken möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Kopiere den folgenden Code in das Modul:

    Sub PDF_drucken()
       Dim strRelPfad As String
       Dim strTitel As String
       strTitel = InputBox("Unter welchem Titel abspeichern? (ohne .pdf)", , "Bericht_")
       strRelPfad = "C:\" & strTitel
       Sheets(Array("Blatt1", "Blatt2", "Blatt3")).Select ' Passe die Blattnamen an
       Application.ActivePrinter = "Microsoft Print to PDF" ' Drucker für PDF
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, PrintToFile:=True, PrToFileName:=strRelPfad
    End Sub
  5. Ändere die Blattnamen in der Sheets(Array(...)).Select Zeile entsprechend Deiner Arbeitsblätter.

  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Führe das Makro aus, indem Du wieder ALT + F8 drückst und das Makro auswählst.


Häufige Fehler und Lösungen

  • Problem: PDF wird nicht gespeichert.

    • Lösung: Stelle sicher, dass der Pfad korrekt ist und Du Schreibrechte für das Verzeichnis hast. Ändere den Pfad in eine zugängliche Location, z.B. C:\Users\DeinBenutzername\Documents\.
  • Problem: Der Drucker wird nicht gefunden.

    • Lösung: Überprüfe den Druckernamen in der Zeile Application.ActivePrinter = "Microsoft Print to PDF". Stelle sicher, dass der Drucker korrekt benannt ist und auf Deinem System verfügbar ist.

Alternative Methoden

Falls Du kein Makro verwenden möchtest, kannst Du auch die integrierte Funktion von Excel nutzen:

  1. Wähle die Arbeitsblätter, die Du drucken möchtest.
  2. Gehe zu Datei > Drucken.
  3. Wähle Microsoft Print to PDF als Drucker aus.
  4. Klicke auf Drucken und wähle den Speicherort für die PDF-Datei.

Diese Methode ist einfach, aber bietet nicht die Flexibilität eines Makros.


Praktische Beispiele

Hier ist ein Beispiel, wie Du ein Makro anpassen kannst, um Dateien mit Datumsangaben zu speichern:

Sub PDF_drucken_mit_Datum()
    Dim strRelPfad As String
    Dim strTitel As String
    Dim strDatum As String
    strDatum = Format(Date, "YYYYMMDD") ' Aktuelles Datum im Format YYYYMMDD
    strTitel = "Bericht_" & strDatum
    strRelPfad = "C:\" & strTitel & ".pdf"

    Sheets(Array("Blatt1", "Blatt2")).Select
    Application.ActivePrinter = "Microsoft Print to PDF"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, PrintToFile:=True, PrToFileName:=strRelPfad
End Sub

Tipps für Profis

  • Benutzerdefinierte Dateinamen: Du kannst den Dateinamen dynamisch anpassen, indem Du Variablen wie das aktuelle Datum oder spezifische Zellinhalte nutzt.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in Dein Makro, um die Benutzerfreundlichkeit zu erhöhen, z.B. durch das Anzeigen von Fehlermeldungen.
  • Batch-Drucken: Wenn Du regelmäßig mehrere PDFs drucken musst, erstelle eine Liste der Blätter und iteriere durch diese.

FAQ: Häufige Fragen

1. Wie kann ich nur einen bestimmten Bereich als PDF drucken? Du kannst den Bereich angeben, indem Du Range("A1:B10").Select anstelle von Sheets(Array(...)).Select verwendest.

2. Was tun, wenn das Drucken als PDF nicht funktioniert? Überprüfe die Druckereinstellungen und stelle sicher, dass der PDF-Drucker korrekt installiert ist. Teste auch andere Druckeroptionen in Excel.

3. Kann ich das Makro in verschiedenen Excel-Versionen verwenden? Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren. Stelle sicher, dass Du die richtigen Druckernamen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige