Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: PDF Drucker im Makro ansteuern

PDF Drucker im Makro ansteuern
25.07.2005 16:46:18
Boris
Hallo,
ich möchte aus einer Excel Seite eine PDF erstellen. Das ganze per Makro. Die Eingabe des Dateinamens soll auch das Makro übernehmen. Es müssen eine ganze Reihe von Dateien erstellt werden, das passiert im Stapelbetrieb. So weit läuft das Makro auch ohne Probleme. der Haken ist der Punkt Namensvergabe der PDF, wie bekomme ich diesen Punkt vom Bildschirm in das Makro? Als Save as / Name / xls ist das kein Problem. Den ganzen Stapel als Excel Dateien zu speichern wäre also kein Problem. Gut, sollen halt PDF's sein.
das Makro zum auswählen des und Anstossen des Druckers:
Application.ActivePrinter = "Adobe PDF on Ne00:"ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _"Adobe PDF on Ne00:", Collate:=True
Der Recorder hat aber keine Befehle wg dem Namen aufgezeichnet........ Oder geht das nicht, weil Acrobat nicht mit VBA zusammenarbeitet?
Merci für eure Hilfe
Gruss
BORIS
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF Drucker im Makro ansteuern
25.07.2005 19:59:20
Reinhard
Hallo Boris,
ich habs nicht so ganz kapiert, eher gar nicht.
Mich wundert dass der Debugger nicht mmeckert bei dem Unterstrich in
ActivePrinter:= _"Adobe PDF on Ne00:", Collate:=True
Und warum der AktiovePrinter 2mal angegeben werden muss ist mir auch unklar.
willst du über Excel-VBA den Namen der PDF die du gerade auf dem Bilschirm im Acrobat writer-Fenster (oder wie der heisst) stehen hast auslesen ?
Ich dachte nur Adope-Software (da gibt es gerade kostenlose eine zeitlich begrenzte Vollversio (120 MB groß!) könne PDFs erstellen. Nach/beim Erstellen sind die auf der Fesplatte und da kannste sie mit vba leicht finden/ausdrucken.
Gruß
Reinhard
Anzeige
AW: PDF Drucker im Makro ansteuern
25.07.2005 21:27:11
Boris
Hallo,
ich möchte das ExcelSheet ausdrucken, der Drucker ist nur nicht der "Papier" Drucker, sondern der PDF Drucker. Ich möchte also aus Excel heraus eine PDF erstellen. Das Programm dazu habe ich. Der PDF Printer steht zwei mal in dem Code, weil ich zunächst den aktiven Printer wechseln muss. Danach drucke ich mit dem dann aktiven PDF Drucker die Seite aus. "Collate:=True" hat der Recorder aufgezeichnet, das kann natürlich auch weggelassen werden.
Mein Prooblem ist jetzt folgendes. Ich starte mein Makro und die Seite wird gedruckt, um die PDF zu erstellen, also "zu drucken", brauche ich aber eine Dateinamen. Dazu geht ein Dialogfenster auf, in dem der Name und der Speicherort angegeben werden müssen. Das soll aber das Makro machen, da das Makro ca 200 PDFs erstellen wird.
meine Frage: Wie kann ich aus dem Makro auf diesen Dialog zugreifen?
Boris
Anzeige
AW: PDF Drucker im Makro ansteuern
25.07.2005 21:49:14
Ramses
Hallo
damit geht es
Sub Start_Print()
'by Ramses
Call Print_to_PDF(ActiveSheet)
End Sub

Public Sub Print_to_PDF(WS As Worksheet)
'by Ramses
Dim wb As Workbook
Dim strFilename As String
Dim STRPFAD As String
'Workbook zuweisen
Set wb = Workbooks(WS.Parent.name)
'Pfad der Mappe extrahieren
STRPFAD = WS.Parent.path
'Dann wechsle vorher in den Pfad der Datei
ChDrive (Left(STRPFAD, 2))
ChDir STRPFAD
'Es darf keine Endung PDF vergeben werden !!!
'Wird durch Acrobat automatisch erstellt
strFilename = Left(WS.Parent.name, Len(WS.Parent.name) - 4)
STRPFAD = STRPFAD & "\" & strFilename
'Den Druckernamen bitte anpasssen
wb.PrintOut ActivePrinter:="Acrobat PDFWriter auf LPT1:", _
    PrintToFile:=True, PrToFilename:=STRPFAD
End Sub

Gruss Rainer
Anzeige
AW: PDF Drucker im Makro ansteuern
25.07.2005 21:53:21
Boris
Hey, cool, merci, werde ich gleich probieren
schönen abend noch
Boris
typischer Anfängerfehler *lach* langer Text,
26.07.2005 01:02:37
nicht
Hallo Rainer,
(hoffentlich hat Boris seine Sonnenbrille mit innen verspiegelten Glasern dabei wenn er weiterliest)
Hast du and die anderen Profis das alle aus nem Buch von Bernd? *grien*
ChDrive (Left(STRPFAD, 1)) *g
Mir ist für mich klar warum jmd C: und nicht C schreibt, seit Dos3.2 bin ihc mit MS in Dauerfehde, dabei lief daß stabil (logisch hat ja nicht Bill geschrieben sondern ein andrer Student dem er es für 1500 Dollar abkaufte, dann ging er zu IBM und machte die Mutter aller Verträge) dabei, nur C antstatt C: da huschen meine Augen magisch hin und ich sehe das als Fehler, bis ich dann das ChDrive entdecke. Also, ist ja wurscht weil es keinen Fehler gibt, aber da wäre MS besser beim Standard C: geblieben *find*
Gruß
Reinhard
ps Ich habe auch das Buch VBA-Programierung von Bernd, es wandert demnächst zu ebay weil ich es seit 2 jahren nicht mehr anfasste.
Liegt aber nicht am Buch, sondern an seinem für mich ungeeigneten Aufbau. Ich muss schnell was finden, also Hilfe google recherche, in der Reihenfolge. Und in dem Buch finde ich nie was schnell.
Aber ich finde es für einen Anfänger ein sehr gutes Buch und der Streit über Codes ist mir egal. Ich kann da eh nicht mitreden.
Brille kann wieder ab @Boris :-)
Anzeige
AW: typischer Anfängerfehler *lach* langer Text,
26.07.2005 09:09:03
Ramses
Hallo
Sorry,... das ich da etwas verwundert schaue.
Aber wo ist da ein Fehler ?
Das funktioniert doch, ... auch wenn ChDrive vielleicht genauso gut mit "C" arbeiten würde.
Gruss Rainer
logo kein Fehler
26.07.2005 11:34:28
Reinhard
Hallo Rainer,
ich wollte dir nur in Kurzform*g mitteilen das man nicht C: bracuht sondern dass C ausreicht.
Gruß
Reinhard
Anzeige
AW: logo kein Fehler
26.07.2005 13:00:25
Ramses
Hallo
Das ist die macht der Gewohnheit :-)
Da ich des öfteren Laufwerke, Pfade und Dateien in unterschiedlichen Variablen speichere, habe ich es mir angewöhnt, beide Zeichen zu extrahieren, da ich dann beim Zusammenbau der Variablen keine Probleme habe und ChDrive damit trotzdem zurechtkommt :-)
Gruss Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

PDF Drucker im Makro ansteuern


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul einfügen: Rechtsklicke in das Projektfenster und wähle „Einfügen“ > „Modul“.

  3. Makro zum Drucken erstellen: Füge den folgenden Code in das Modul ein:

    Sub Start_Print()
       Call Print_to_PDF(ActiveSheet)
    End Sub
    
    Public Sub Print_to_PDF(WS As Worksheet)
       Dim wb As Workbook
       Dim strFilename As String
       Dim STRPFAD As String
    
       Set wb = Workbooks(WS.Parent.Name)
       STRPFAD = WS.Parent.Path
    
       ' Wechselt in den Pfad der Datei
       ChDrive (Left(STRPFAD, 2))
       ChDir STRPFAD
    
       ' Dateinamen ohne PDF-Endung erstellen
       strFilename = Left(WS.Parent.Name, Len(WS.Parent.Name) - 4)
       STRPFAD = STRPFAD & "\" & strFilename
    
       ' Druckbefehl an den PDF-Drucker
       wb.PrintOut ActivePrinter:="Adobe PDF on Ne00:", _
                   PrintToFile:=True, PrToFilename:=STRPFAD
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Druck: Stelle sicher, dass der Adobe PDF-Drucker korrekt installiert ist. Gehe zu den Druckereinstellungen und füge den Drucker hinzu, falls er fehlt.

  • Druckdialog öffnet sich: Wenn der Dialog zur Dateinamenvergabe erscheint, überprüfe, ob PrintToFile:=True im Druckbefehl gesetzt ist. Dies verhindert das Öffnen des Dialogs.

  • Falscher Drucker ausgewählt: Verwende den Befehl Application.ActivePrinter = "Adobe PDF on Ne00:", um den gewünschten Drucker auszuwählen. Achte darauf, dass der Name exakt übereinstimmt.


Alternative Methoden

  • PDF-Drucker als Standard festlegen: Stelle den Adobe PDF-Drucker als Standarddrucker in den Windows-Druckeinstellungen ein. Dadurch wird der Druckvorgang einfacher, da Du nicht jedes Mal den Drucker auswählen musst.

  • Verwendung von Drittanbieter-Tools: Es gibt verschiedene Tools, die PDF-Drucker bereitstellen, wie z.B. CutePDF oder PDFCreator. Diese können ebenfalls über VBA angesteuert werden.


Praktische Beispiele

  • Drucken mehrerer Blätter: Wenn Du mehrere Arbeitsblätter drucken möchtest, kannst Du eine Schleife verwenden:

    Sub PrintAllSheets()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           Call Print_to_PDF(ws)
       Next ws
    End Sub
  • Dateinamen automatisch generieren: Du kannst den Dateinamen dynamisch erstellen, indem Du das aktuelle Datum oder bestimmte Zellinhalte einfügst:

    strFilename = ws.Range("A1").Value & "_" & Format(Date, "YYYYMMDD")

Tipps für Profis

  • Debugging in VBA: Nutze den Debugger, um den Code Schritt für Schritt auszuführen und Fehler zu identifizieren. Setze Breakpoints und überprüfe Variablenwerte während der Ausführung.

  • PDF-Drucker hinzufügen: Um sicherzustellen, dass der richtige Druckertreiber verwendet wird, kannst Du die Adobe PDF Druckertreiber regelmäßig aktualisieren oder neu installieren.

  • Verwendung von vba pdf drucken-Makros: Entwickle komplexere Makros, die das Drucken von PDF-Dokumenten mit verschiedenen Optionen (wie z.B. Passwortschutz) ermöglichen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Adobe PDF-Drucker installiert ist?
Gehe zu Systemsteuerung > Geräte und Drucker und überprüfe, ob der Adobe PDF-Drucker dort gelistet ist.

2. Kann ich andere PDF-Drucker verwenden?
Ja, Du kannst jeden installierten PDF-Drucker verwenden, indem Du den Namen im VBA-Code entsprechend änderst.

3. Wie kann ich den Speicherort für die PDF-Dateien festlegen?
Du kannst den Pfad in der STRPFAD-Variable im Makro definieren, um die PDFs an einem bestimmten Speicherort zu speichern.

4. Ist es möglich, mehrere PDFs gleichzeitig zu drucken?
Ja, Du kannst eine Schleife verwenden, um mehrere Arbeitsblätter oder Dateien in einem Batch zu drucken.

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