Guten Morgen
Ich möchte aus Access ein Word Dokument drucken!
Ich fülle das Dokument mit Daten - Das klappt soweit sehr gut – Dokument wird komplett gefüllt und steht zum Speichern oder Drucken bereit.
Jedoch sollte das Word Dokument am Ende gedruckt werden; und anschließend ohne zu speichern Schließen.
Jetzt kommt der Hacken. Ich möchte das Dokument in ein PDF – Umwandeln, mit einem PDF Drucker z.b PDFCreator oder ,,FreePDF" –
Diese Drucker sind NICHT meine Standard Drucker.
Folgenden Code habe ich aufgebaut:
-----------------------------------------
`(Drucken bz.w ein PDF erzeugen)
-----------------------------------------
Dim prn As Printer
For Each prn In Application.Printers
If prn.DeviceName = "PDFCreator" Then
oApp.Application.PrintOut FileName:=""
Exit For
End If
Next prn
--------------------------------------------------------
`(Schliessen des Dokuments ohne zu speichern) (Dieser CODE Funktioniert )
---------------------------------------------------------
oApp.ActiveDocument.Saved = True
oApp.ActiveWindow.Close
oApp.Application.Quit
Wenn ich den PDFCreator als Standard Drucker in Windows auswähle, läuft der Code durch und ein PDF wird erzeugt, Dokument schließt, ohne zu speichern.
Er soll aber Drucken wenn der PDFCreator nicht als Standard Drucker ausgewählt wurde – Denn dieser ist bei keinem PC als Standard Drucker eingerichtet. Er soll natürlich auch nach dem Drucken nicht als Standard Drucker(AktivePrinter) erscheinen.
HILFE hat jemand einen TIPP?!
;) Danke
Hallo,
hier eine kleine Routine zum setzen des Druckers.
' PDF Drucker auswählen
Set Application.Printer = Application.Printers("PDF Drucker")
' Bericht drucken
DoCmd.OpenReport stDocName
' Standarddrucker wieder einstellen
Set Application.Printer = Application.Printers(Default)
Muss natürlich auf deine Druckernamen angepasst werden.
Gruß
Johann
Hallo Johann,
erstmal Danke, hat aber leider nicht funktioniert.
Hier mein Code - von Deinem Kopiert und Angepasst
' PDF Drucker auswählen
Set Application.Printer = Application.Printers("PDFCreator")
' Bericht drucken
oApp.Application.PrintOut FileName:=""
'Document NICHT Speichern und Schliessen
oApp.ActiveDocument.Saved = True
oApp.ActiveWindow.Close
oApp.Application.Quit
' Standarddrucker wieder einstellen
Set Application.Printer = Application.Printers(Default)
Leider wählt er nach wievor den Standard Drucker zum drucken in der ersten Zeile der PDFCreator wird nicht gewählt, Was mache ich FALSCH!!??
Hallo,
"Application.Printer " bezieht sich den Access und nicht auf Word..
Hallo,
das ist klar, ich möchte ja das Word Dokument (Siehe erste anfrage) aus Access drucken.
Im code möchte ich den Drucker für dieses Dokument auf PDFCreator setzen und drucken und anschliessend soll wieder der Standard Drucker in der Druckerauswahl erscheinen. Zurzeit ist es so das der PDFCreator nach dem Code durchlauf als Standard drucker erscheint???
Hallo,
Ich hoffe nur das DF6GL nicht Recht hat was mehr als selten ist.
Aber wenn der PDFCreator als Standarddrucker erscheint sind wir ja schon einen Schritt weiter.
Dann mußt du vorher den Standarddrucker in eine String-Variable speichern und anschliessend wieder zuordnen.
Standarddruck = Application.Printers(Default)
Set Application.Printer = Application.Printers("PDFCreator")
drucken
zum Schluss
Set Application.Printer = Standarddrucker
Ist auf jeden Fall ein Versuch wert.
Gruß
Johann
Hallo,
Zitatdas ist klar, ich möchte ja das Word Dokument (Siehe erste anfrage) aus Access drucken
...und die Betonung liegt auf Word-Dokument ...
Set Application.Printer bezieht sich auf Access - so wie Franz schon geschrieben hat - und nicht auf das zu druckende Word-Dokument.
Hallo,
und nachdem wir das jetzt festgestellt haben, dann könnte es so heißen: ;)
' PDF Drucker auswählen
oApp.ActivePrinter= "PDFCreator"
' Bericht drucken
oApp.Application.PrintOut FileName:=""
Hallo DF6GL,
Danke für Deine Antwort.
Diesen Code habe ich schon am Anfang gehabt. Funktioniert auch ABER??!! Folgendes,
Wir haben circa 50 Rechner im Einsatz. Verteilt auf zwei Stockwerke. Jedes Büro hat eine Drucker und Teilweise gibt es einen Gemeinschafts Drucker z.B. HP MFG - Multi Funktionsgerät, Farb Laser
D.H Jeder Rechner hat einen anderen "Default Drucker" . Im Büro wo vielleicht zwei rechner sind haben diesen den gleichen "Default Drucker".
Was ich sagen möchte ist 50 Rechner und ungefähr 25 Verschiedene "Default Drucker"
Alle Rechner haben aber den "PDFCreator"
Nun zu meinem Problem bzw. Frage.
Der Anwender arbeitet mit meinem Programm( Access-DatenBank) und möchte das Word Dokument Drucken
Er hat einen "Default Drucker" und wenn er mein Druck vorgang startet mit dem Code
' PDF Drucker auswählen
oApp.ActivePrinter= "PDFCreator"
' Bericht drucken
oApp.Application.PrintOut FileName:=""
Wird der "PDFCREATOR" ausgwählt -- WAS JA AUCH RICHTIG IST und das PDF Dokument wird erzeugt. SOWEIT ALLES RICHTIG:
Problem ist folgendes.
Der "Default Drucker " ist jetzt der "PDFCreator" im WINDOWS Drucker Auswahl!
Was ich möchte ist das nach dem Druckvorgang (PDFCreator ) der Defaultdrucker wieder auf den ORIGINAL "Defaultdrucker" zurück gesetzt wird.
Genau HIER SCHEITERE ICH!?
DIe Lösung von Oben ist soweit richtig! Es fehlt nur das zurücksetzen auf den ORIGINAL DEFAULTDRUCKER
DANKE
Hallo,
dann merke Dir den Default-Printer und weise den nach dem Druck wieder zu:
Dim strDefaultPrinter as String
strDefaultPrinter =oApp.ActivePrinter
oApp.ActivePrinter= "PDFCreator"
' Bericht drucken
oApp.Application.PrintOut FileName:=""
oApp.ActivePrinter=strDefaultPrinter
Hallo DF6GL,
Danke für Deine Hilfe, war sehr Hilfreich. Ich habe auch meinen Fehler erkannt. :o
Problem gelöst.
HILFE WAR SEHR GUT DANKE und ich wünsche Frohe Weihnachten und einen guten Rutsch ins Jahr 2011