Neuigkeiten:

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

Mobiles Hauptmenü

Aus Access ein Word Dokument drucken!

Begonnen von Schakal, Dezember 03, 2010, 07:43:21

⏪ vorheriges - nächstes ⏩

Schakal

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

Jonny

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

Schakal

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!!??

DF6GL

Hallo,

"Application.Printer "   bezieht sich den Access und nicht auf  Word..

Schakal

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???

Jonny

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

database

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.


DF6GL

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:=""





Schakal

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



DF6GL

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


Schakal

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