VBA PDF-Dateien erstellen
LakeBodom 27.07.2005 - 11:01 1210 0
Bodominjaervi
OC Addicted
|
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: [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: 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
|