Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

PDF-Drucker: Speicherpfad und Dateiname

Begonnen von Luk90, März 26, 2015, 09:59:28

⏪ vorheriges - nächstes ⏩

markusxy

welcher Teil ist unklar? Einstellungen des Druckertreibers oder der code?

Luk90

Entschuldigung, da hätte ich mich glaube genauer ausdrücken sollen.
Es geht eher um den Code, ich denke die Drucker-Treiber müsste ich noch ändern können. Allerdings bin ich mir nicht sicher ob ich dazu die Berechtigungen habe (kann gerade nicht nachschauen, da ich im Urlaub bin)

Ich habe allerdings noch einen Code gefunden, der mein Problem behandelt, allerdings für Excel ist:
(Ich hoffe es ist Ok ihn zu posten)

Sub PDFDrucken_V1()
'Die Distiller-Bibliothek im VBA-Editor Menü [Extras - Verweise -
Acrobat Distiller]
'laden, damit die Ditiller-API verfügbar wird
Dim Drucker As New ACRODISTXLib.PdfDistiller

Dim PS_Pfad As String
Dim PDF_Pfad As String

PS_Pfad = "C:\test123\Datei.ps"
PDF_Pfad = "C:\test123\Datei.pdf"

'PostScript generieren:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=False, _
ActivePrinter:="Adobe PDF auf Ne05:", PrintToFile:=True,
PrToFileName:=PS_Pfad, Collate:=True

'PDF generieren:
Drucker.FileToPDF PS_Pfad, PDF_Pfad, ""
End Sub


Würde sowas funktionieren? ich habe ihn leider noch nicht zum laufen bekommen :(


markusxy

Meine Angaben, waren unter Benutzung des normalen Acrobat Druckertreibers. Vermutlich geht es aber auch mit dem Distiller.

Luk90

Private Sub Befehl11_Click()
Dim Drucker As New ACRODISTXLib.PdfDistiller

Dim PS_Pfad As String
Dim PDF_Pfad As String

PS_Pfad = "C:\test\Datei.ps"
PDF_Pfad = "C:\test\Datei.pdf"

Set Screen.ActiveReport.Printer = Printers("Adobe PDF")
Screen.ActiveReport.Printer.Orientation = 2
PrToFileName = PS_Pfad
Drucker.FileToPDF PS_Pfad, PDF_Pfad, ""
End Sub



Das ist mein momentaner Code, er läuft auch ohne Fehlermeldung. Allerdings wird keine Datei erstellt, habe ich irgendwas vergessen?

VG

MaggieMay

#19
Hallo,

hast du den Code mal kompiliert vor dem Testen?
Und hast du "Option Explicit" im Kopf aller deiner Module stehen?

Was mir noch unklar ist, ist die Sache mit der ps-Datei, wo soll die herkommen?
Freundliche Grüße
MaggieMay

Luk90

Habe jetzt Option Explicit eingefügt: und nun kommt ein Fehler und zwar sagt er:
Fehler beim Kompilieren: Variable nicht definiert

und bezieht sich dabei auf PrToFileName

Ich dachte eigl durch PrToFileName wird die PS erstellt?? oder sehe ich da etwas falsch

MaggieMay

PrToFileName  war ein Parameter der PrintOut-Methode aus dem Excel-Beispiel.
Die PrintOut-Methode aus Access bietet das nicht, außerdem setzt du sie ja gar nicht ein.
Freundliche Grüße
MaggieMay

Luk90

das hatte ich auch schon befürchtet :(

was kann ich denn da machen? gibt es so etwas nicht auch bei Access?

VG und Vielen Dank

Luk90

Hey Leute ich bins mal wieder :D

ich habe es nun hinbekommen, dass die PDF automatisch in einem bestimmten Ordner gespeichert wird, indem ich die Drucker-Treiber Einstellungen umgestellt habe.

Nun würde ich gerne noch eine automatische Namensvergabe für die PDF haben. (zusammengesetzt aus Datum und bestimmten ausgewählten Ansprechpartner).
Gibt es da eine Möglichkeit das über VBA zu realisieren?

und 2.) kann man die Einstellung, dass die PDF automatisch in den bestimmten Ordner abgespeichert wird auch per VBA automatisieren? So dass sie nur in dem Moment der PDF-Erstellung und nicht die ganze Zeit gilt?

Vielen Dank euch schon mal und einen Guten Start in die Woche

MaggieMay

Hi,

kannst du noch einen Tipp geben, wie man die Druckertreibereinstellungen anpassen muss, um das Ziel zu erreichen? Und hat das dann auch Auswirkungen auf andere Anwendungen?

Was den Dateinamen betrifft, so wird der wenn ich nicht irre aus der Beschriftung des Berichts gebildet, darauf könntest du ja nach dem Öffnen noch Einfluss nehmen.

Wie sieht denn der aktuelle VBA-Code dazu aus?
Freundliche Grüße
MaggieMay

Luk90

Also ich habe einfach bei den Druckereinstellungen von Adobe PDF einen festen Output-Ordner festgelegt.
Das ist auch keine langfristige Lösung, da man ja auch evtl mal etwas anderes zu PDF umwandeln möchte.
Aber evtl kann man das ja auch nur für den Zeitpunkt der PDF-Erstellung per VBA so einstellen??

Das ist mein momentaner Code: ist nicht wirklich lang :D
DoCmd.SelectObject acReport, Screen.ActiveReport.Name
     Set Screen.ActiveReport.Printer = Printers("Adobe PDF")
     Screen.ActiveReport.Printer.Orientation = 2
     

        DoCmd.PrintOut
     
End Sub


Genau er greift dann auf den Namen des Berichts zu, evtl könnte man den ja den Wünschen entsprechend ändern.

VG und Vielen Dank

MaggieMay

Wie man den PDF-Drucker per VBA manipulieren könnte weiß ich nicht, aber die Einstellung lässt sich auch in der Registry finden und notfalls dort ändern, Stichwort: AdobePDFOutputFolder.

ZitatGenau er greift dann auf den Namen des Berichts zu
Nein, es ist die Caption-Eigenschaft des Berichts, den Namen kannst du ja schlecht ändern.
Freundliche Grüße
MaggieMay

markusxy

Luk90:
Drucker per VBA in Access mit Übergabe des ReportNamens

sub Drucken(sReport$)
     docmd.Openreport sReport
End Sub

Verschieben des fertigen Reports mit Übergabe des alten und des neues Pfades

sub verschieben(sAlterPfad$, sNeuerPfad$)
      Name sAlterPfad as sNeuerPfad
End sub