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

Forumthread: Speicherort für PDF-Druck festlegen

Speicherort für PDF-Druck festlegen
Nico
Hallo zusammen!
Ich habe ein Problem mit einem Druck-Makro, bei dem ihr mir bestimmt helfen könnt.
Ich habe ein Seriendruck-Makro gebaut (auch mit eurer Hilfe), mit dem ich nacheinander die Werte in einer Drop-Down-Zelle anwählen kann und dann nach Auswahl eines neuen Wertes das Tabellenblatt mit dem PDF-Drucker als PDF speichern kann.
Soweit so gut, jedoch sind die gespeicherten Dateien fehlerhaft und können nicht geöffnet werden.
Mein Code sieht folgendermaßen aus:
Sub Seriendruck()
Application.ActivePrinter = "FreePDF auf Ne01:"
'Tabellennamen und Zelle anpassen
Set rZelle = Sheets("Tabelle1").Range("c5")
Set rListZelle = Range(Replace(rZelle.Validation.Formula1, "=", ""))
For Each rListZelle In rListZelle
rZelle.Value = rListZelle.Value
' Call Bilder_einfügen
'PrintPreview
'ActiveWindow.SelectedSheets.PrintOut Copies:=1, PrToFileName:="V:\04 Mitarbeiter\02 Nico\" & _
rListZelle & ".pdf"Sheets("Tabelle1").PrintOut
Next rListZelle
End Sub
Ich vermute, dass das Problem in dem PrToFile-Befehl liegt, da ich wohl so eine Datei mit der Endung .pdf erstelle, die aber faktisch kein PDF ist.
Hat jemand einen Vorschlag, wie ich dieses Problem lösen könnte?
Danke schön für eure Hilfe!
Grüße,
Nico
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Speicherort für PDF-Druck festlegen
29.07.2010 10:19:29
Manfred
Hallo Nico,
ich habe vor längerer Zeit mal folgenden Code benutzt.
Sub Drucken()
wnam = ActiveWorkbook.Name
wname = Left(wnam, Len(wnam) - 4)
dname = "d:\PDF-Dokumente\in\" & wname & "_" & ActiveSheet.Name
drunam = dname & "{enter}"
SendKeys drunam
old_drucker = Application.ActivePrinter
Application.ActivePrinter = "PS-Drucker HP auf FILE:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PS-Drucker HP auf FILE:", PrintToFile:=True, Collate:=True
Application.ActivePrinter = old_drucker
End Sub
Wichtig ist dabei, dass im Druckertreiber eingestellt ist, dass er bei jedem Druck nach dem Dateinamen, den die pdf-Datei haben soll, fragt. Dieser Name wird vom Makro vor dem Druckbefehl mit dem Befehl Sendkeys in die Zwischenablage kopiert und dort vom Druckertreiber abgeholt.
Ich hoffe, es funktioniert auch bei dir.
Gruß
Manfred
Anzeige
AW: Speicherort für PDF-Druck festlegen
29.07.2010 11:17:01
JOWE
Hallo Nico,
um ein pdf-File mit dem FreePdfXP-Printer zu erzeugen musst Du zunächst eine Postscript-Datei erzeugen.
Danach startest du eine Shell für den FreePDF-Drucker und läßt damit das PDF-Document ausgeben.
Hier ein Beispiel welches Du leicht in Deine Schleife einbauen kannst:
Sub print_to_named_PDF()
Dim strPfad, strName, strPrinter As String
strPfad = "C:\Daten\PDF\"
With ActiveSheet
strName = "Beispiel"
strPrinter = Application.ActivePrinter
Application.ActivePrinter = "FreePDF XP auf Ne02:"
.PrintOut ActivePrinter:=Application.ActivePrinter, _
PrintToFile:=True, PrToFileName:=strPfad & strName & ".ps"
Shell ("c:\programme\freepdf_xp\freepdf.exe " _
& strPfad & strName & ".ps" & " /a /d /x")
End With
Application.ActivePrinter = strPrinter
End Sub

Gruß
Jochen
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speicherort für PDF-Druck festlegen


Schritt-für-Schritt-Anleitung

Um den Speicherort für den PDF-Druck in Excel festzulegen, kannst du ein VBA-Makro nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub PDF_Drucken()
       Dim strPfad As String
       Dim strDatei As String
    
       strPfad = "C:\Dein\Pfad\"
       strDatei = "DeineDatei.pdf"
    
       Application.ActivePrinter = "FreePDF auf Ne01:"
       ActiveSheet.PrintOut ActivePrinter:=Application.ActivePrinter, _
           PrintToFile:=True, PrToFileName:=strPfad & strDatei
    End Sub
  4. Passe den Speicherort an: Ändere strPfad und strDatei nach deinen Bedürfnissen.

  5. Führe das Makro aus: Drücke F5 oder gehe zurück zu Excel und führe das Makro über Entwicklertools > Makros aus.

Mit diesem Makro wird die PDF-Datei an dem von dir festgelegten Speicherort gespeichert.


Häufige Fehler und Lösungen

  • Fehlerhafte PDF-Dateien: Wenn die erstellte Datei nicht geöffnet werden kann, überprüfe, ob der PrToFileName korrekt angegeben ist. Achte darauf, dass der Pfad existiert und du die notwendigen Berechtigungen hast.

  • Drucker nicht gefunden: Stelle sicher, dass der FreePDF-Drucker installiert und im System als Standard-Drucker ausgewählt ist. Du kannst den Drucker auch manuell in den Druckeinstellungen auswählen.

  • PDF drucken gesperrt: Wenn der PDF-Druck blockiert ist, kann es an fehlenden Berechtigungen liegen. Überprüfe deine Sicherheitseinstellungen oder versuche, Excel als Administrator auszuführen.


Alternative Methoden

Wenn du den PDF-Druck über VBA nicht umsetzen kannst, gibt es auch andere Möglichkeiten:

  • Excel-Funktion: In Excel 2016 und höher kannst du auch direkt über Datei > Speichern unter die Option „PDF“ auswählen und den Speicherort bestimmen.

  • Drittanbieter-Tools: Es gibt verschiedene Tools, die den PDF-Druck unterstützen, wie z.B. PDFCreator oder Bullzip PDF Printer. Diese bieten oft zusätzliche Funktionen für den PDF-Druck.


Praktische Beispiele

Hier sind einige praktische Beispiele für den PDF-Druck in Excel:

  1. Seriendruck für mehrere Dateien: Verwende das folgende VBA-Skript, um mehrere PDF-Dokumente mit unterschiedlichen Namen zu erstellen:

    Sub Seriendruck()
       Dim rZelle As Range
       Dim rListZelle As Range
    
       Set rZelle = Sheets("Tabelle1").Range("C5")
       Set rListZelle = Range("A1:A10") 'Passe den Bereich an
    
       For Each rListZelle In rListZelle
           rZelle.Value = rListZelle.Value
           ActiveSheet.PrintOut ActivePrinter:="FreePDF auf Ne01:", _
               PrintToFile:=True, PrToFileName:="C:\Dein\Pfad\" & rZelle.Value & ".pdf"
       Next rListZelle
    End Sub
  2. Speichern unter einem spezifischen Namen: Verwende den folgenden Code, um die PDF-Datei unter einem benutzerdefinierten Namen zu speichern:

    Sub SpeichernAlsPDF()
       Dim strDatei As String
       strDatei = InputBox("Gib den Dateinamen ein:")
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Dein\Pfad\" & strDatei & ".pdf"
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error GoTo-Anweisungen in deinem VBA-Code, um Fehler während des Druckvorgangs zu erfassen und zu behandeln.

  • Automatisiere den Prozess: Kombiniere mehrere Makros, um den PDF-Druck und das Speichern in einem Schritt zu automatisieren.

  • Testen in verschiedenen Excel-Versionen: Achte darauf, dass dein Code in verschiedenen Versionen von Excel getestet wird, um die Kompatibilität sicherzustellen.


FAQ: Häufige Fragen

1. Wie ändere ich den Drucker, den ich für den PDF-Druck verwenden möchte?
Du kannst den Drucker in deinem Makro ändern, indem du die Zeile Application.ActivePrinter = "FreePDF auf Ne01:" anpasst. Ersetze „FreePDF auf Ne01:“ durch den Namen des gewünschten Druckers.

2. Warum kann ich die PDF-Datei nicht öffnen?
Das kann mehrere Gründe haben. Überprüfe, ob der Pfad im PrToFileName korrekt ist und ob der Drucker ordnungsgemäß konfiguriert ist. Stelle sicher, dass der FreePDF-Drucker korrekt installiert ist.

3. Kann ich den Speicherdialog anzeigen, bevor die PDF gespeichert wird?
Ja, das geht, indem du den PrintOut-Befehl anpasst. Du kannst den Befehl SendKeys verwenden, um den Dateinamen während des Druckvorgangs einzugeben, wie Manfred in seinem Beitrag vorgeschlagen hat.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige