mikefield
Goto Top

Per Batch bzw. VBS eine Word Datei auf bestimmten Drucker drucken

ohne den Standarddrucker zu verändern

Biber hat hier eine Lösung eingestellt, um eine Word Datei per VBS direkt an einem Drucker auszugeben:

' -----------------snipp PrintADoc.vbs Biber 2007  
If WScript.Arguments.Count < 1 Then
	WScript.Echo("Syntax: PrintADoc.vbs Worddatei.doc [Druckername]" )  
	WScript.Quit
End If

strFile = WScript.Arguments(0)

Set objWord = WScript.CreateObject("Word.Application")  
If WScript.Arguments.Count = 1 Then
   objWord.ActivePrinter = Wscript.Arguments(1)
end if   
objWord.Documents.Open strFile
objWord.ActiveDocument.PrintOut

Wscript.Sleep(0815)

objWord.ActiveDocument.Close
objWord.Quit
' -----------------snapp PrintADoc.  

Der Aufruf erfolgt bei mir wie folgt:

cscript //nologo D:\Scripts\Word_Print.vbs "D.\Meine Dateien Beispiel.doc" "Wunsch Drucker" 

Leider funktioniert hier die Auswahl des Druckers über den Parameter (1) nicht. Wenn ich ihn direkt hinter
"objWord.ActivePrinter = " eintrage, funktioniert es. Allerdings wird dieser Drucker auch gleich als Standarddrucker
gesetzt, was ich nicht möchte. Gibt es hierzu eine Lösung?

mf

Content-ID: 128765

Url: https://administrator.de/contentid/128765

Ausgedruckt am: 23.11.2024 um 03:11 Uhr

bastla
bastla 05.11.2009 um 21:58:12 Uhr
Goto Top
Hallo Mikefield!

Versuch es mit folgender Zeile 10:
If WScript.Arguments.Count > 1 Then
bzw hinsichtlich "Setzen des Standarddruckers" mit einem Zwischenspeichern des bisherigen Standarddruckers am Anfang des Scripts
StdDrucker = objWord.ActivePrinter
und dem Rücksetzen nach dem Ausdruck
objWord.ActivePinter = StdDrucker
Grüße
bastla
Mikefield
Mikefield 05.11.2009 um 23:05:54 Uhr
Goto Top
Hallo Bastla!

Die Zeile
StdDrucker = objWord.ActivePrinter
erzeugt leider folgenden Fehler: Word_Print.vbs(6, 1) Laufzeitfehler in Microsoft VBScript: Objekt erforderlich: 'objWord'
Das mit dem > 1 Then hat funktioniert!

mf
bastla
bastla 05.11.2009 um 23:13:47 Uhr
Goto Top
Hallo Mikefield!

Sorry - "Anfang des Scripts" war nur grundsätzlich gemeint ...

Da das "objWord"-Objekt erst in Zeile 9 erzeugt wird, kann es natürlich erst danach verwendet werden - die von Dir zitierte Zeile kann daher zB unmittelbar nach Zeile 9 platziert werden.

Grüße
bastla
Mikefield
Mikefield 10.11.2009 um 20:23:21 Uhr
Goto Top
Hallo Bastla!

Bin leider erst heute dazu gekommen, das ganze noch einmal durch zu spielen.
Das Zurücksetzen des Druckers wird mit einer Fehlermeldung abgewiesen:
Word_Print.vbs(21, 1) Laufzeitfehler in MicrosoftVBScript: Das Objekt unterstützt
diese Eigenschaft oder Methode nicht.: 'objWord.ActivePinter'
Ich hatte den entsprechenden Befehl zum Zurücksetzen in Zeile 15 eingefügt.

mf
Biber
Biber 10.11.2009 um 21:05:38 Uhr
Goto Top
Moin Mikefield,

Word_Print.vbs(21, 1) Laufzeitfehler in MicrosoftVBScript: Das Objekt unterstützt
diese Eigenschaft oder Methode nicht.: 'objWord.ActivePinter'

Und wenn du statt der Methode .ActivePinter die Alternativ-Methode .ActivePrinter nimmst?

oder .ActivePlintel, wie meine mandeläugige chinesische Plaktikantin zu sagen pflegt...

Grüße
Biber
Mikefield
Mikefield 10.11.2009 um 21:16:40 Uhr
Goto Top
Mahlzeit, Bastla!

Also damit hätte ich jetzt wirklich nicht gerechnet! Bin ich aber voll in die Falle getappt!
Nur gut, daß das Original auch so heißt! Hast wohl Deine Plaktikantin schreiben lassen. face-smile
Natürlich funktioniert es jetzt!.

Herzlichst
mf
bastla
bastla 10.11.2009 um 21:18:17 Uhr
Goto Top
Hallo Mikefield!
Hast wohl Deine Plaktikantin schreiben lassen. face-smile
Ne ne, solchen Blödsinn mach' ich schon selbst (außerdem sind die Praktikantinnen alle für Biber reserviert face-wink).

@Biber
Danke für's Nachbessern ... face-smile

Grüße
bastla

P.S.: Konsequenter Weise würde ich .ActivePinter dann aber nicht "Methode", sondern "Poperty" nennen ... face-wink
Biber
Biber 10.11.2009 um 21:35:09 Uhr
Goto Top
Moin bastla,

lichtig, lichtig.... ist sich ja ein kleines Plopelty.....

Bin da noch nicht ganz bibelfest.. face-wink

Danke
Biber