VBA PDF-Dateien erstellen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/vba_pdf-dateien_erstellen_146546/page_1 - zur Vollversion wechseln!


Bodominjaervi schrieb am 27.07.2005 um 11:01

Hab ein Problem unter Access 2000 und VBA.

Möcht gern programmgesteuert ein PDF-File erstellen.
Dazu hab ich die Zusatz-Programme GhostScript und MakePDF.

Ein Problem dabei ist, dass ich immer zuerst "Drucken" muss. (Per Menü "Drucken", GhostScript-Datei auswählen,
damit ein "Dateiname.ps" erstellt wird.)

Dann kann ich mittels:

Code:
[COLOR=blue]Dim[/COLOR] strShell [COLOR=blue]As String[/COLOR] [COLOR=green]'Kommandozeile[/COLOR]
[COLOR=blue]Dim[/COLOR] doit [COLOR=blue]As Variant    [/COLOR][COLOR=green]'Ausführen[/COLOR]
[COLOR=blue]Dim[/COLOR] strName [COLOR=blue]As String  [/COLOR][COLOR=green]'Dateiname[/COLOR]
   
  [COLOR=green] 'Verzeichnis von MakePDF angeben
   'Verzeichnis von GhostScript angeben und Formularname herausfiltern
   '/D ... (Delete) Eingabedatei (*.ps) wird nach Umsetzung gelöscht
   '/S ... (Show) Fertige PDF-Datei nach der Umsetzung anzeigen
   '/V1.2, /V1.3, /V1.4 ... (Version) Definiert Acrobate-Version
   '/Q ... (Quiet) Keine Meldungen, sonst. Anzeigen während Umsetzung
   '/O "Ausgabedatei" ... (Output) Pfad und Name für die Ausgabedatei
   '/M Betreff ... (Message) Erstellt neue Nachricht mit der angegebenen
   '                    Betreffzeile und der erstellten PDF-Datei als Anhang[/COLOR]
   
   strName = "C:\Tools\GS\Output\" + Me.Caption + ".pdf"
     
   strShell = Chr$(34) & "C:\Tools\MakePDF.exe" & Chr$(34) & " " & _
              Chr$(34) & "C:\Tools\GS\Input\Dateiname.ps" & Chr$(34) & _
              " /D /S /V1.4 /Q /O " & Chr$(34) & strName & Chr$(34)
   
   doit = Shell(strShell)

die eben per Drucker angelegte "Dateiname.ps" in ein PDF-Format umwandeln

strName = Ausgabedatei (zB.: Katalog.pdf)
"C:\Tools\MakePDF.exe" = Prog zum Umwandeln von .ps in .pdf.

Problem: Ich würd gern vor der Umwandlung den Druckvorgang programmgesteuert aufrufen,
damit das lästige "Menü-Drucken" wegfällt.

Mit der Funktion DoCmd.OpenReport funktioniert es leider nicht, da immer die Fehlermeldung:

Code:
Laufzeitfehler '2585':

Diese Aktion kann nicht ausgeführt werden,
solange ein Formular- oder Berichtsereignis verarbeitet wird.

Ist DoCmd.OpenReport die richtige Methode?
Kann ich VBA irgendwie zum Warten bringen, bis das Ereignis abgearbeitet ist?

Tia




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025