37414
Goto Top

Fehlermeldung - Es wurde kein Standarddrucker gewählt - bei jedem Programmstart

Hallo,

wir nutzen auf einem Terminalserver (Server 2008) ein individuell für uns programmiertes Programm auf unserer Arbeitsstelle.
Der damalige Programmierer arbeitet jedoch seit ein paar Jahren nicht mehr mit uns zusammen.

Das Programm basiert auf einer älteren Delphi-Version und für die Nutzung wird Word 2000 benötigt, welches auch installiert ist.

Nun erschien seit ein paar Monaten bei einer Kollegin bei jedem Programmstart die Fehlermeldung

"Es wurde kein Standarddrucker gewählt"

Dies ist jedoch nicht so, denn wenn ich unter "Geräte und Drucker" schaue, ist der für das Programm benötigte Drucker gewählt.

Jedesmal muss die Kollegin das Programm über den Taskmanager raus kicken und dann unter "Geräte und Drucker" zunächst einen anderen Drucker zum Standarddrucker machen und anschließend den ursprünglichen wieder auswählen. NUR DANN startet das Programm ohne diese Fehlermeldung.

Seltsam ist, dass es auch nicht über ein Script funktioniert, welches ich kurz testweise geschrieben hatte.
Dieses Script setzt einfach einen anderen Drucker als Standard und danach den ursprünglichen Drucker wieder als Standard... klappt nicht!!
Es geht tatsächlich nur dann, wenn man diese 2 Schritte manuell durchführt.

Seit gestern hat nun eine weitere Kollegin das gleiche Problem und deshalb stelle ich jetzt hier die Frage und würde mich freuen, wenn Ihr helfen könnt.

Danke und schöne Grüße,
imebro

Content-Key: 262125

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

Ausgedruckt am: 29.03.2024 um 05:03 Uhr

Mitglied: emeriks
emeriks 03.02.2015 um 18:42:04 Uhr
Goto Top
Hi,
wie greift Ihr denn auf die TS zu? ICA oder RDP?
Kann es sein, dass es sich bei den verbundenen Druckern um automatisch verbundene Clientdrucker handelt?

Entweder das TS-Benutzerprofil komplett löschen und neu aufbauen.

Oder von Hand löschen
HKEY_CURRENT_USER\Printers
(Dabei gehen aber auch alle benutzerspezifischen Einstellungen dieses Benutzers zu den einzelnen Druckern flöten.)

Danach neu anmelden lassen.

E.
Mitglied: 37414
37414 04.02.2015 aktualisiert um 09:51:28 Uhr
Goto Top
Hallo,

wir greifen über die Remotedesktopverbindung auf den Terminalserver zu.
Benutzerprofil löschen ist ganz sicher "mit Kanonen auf Spatzen geschossen" face-wink
Denke nicht, dass das nötig sein wird.

Es funktionierte ja bis vor ein paar Tagen, wo ich für die Kollegen ein Makro geschrieben hatte (mit Hilfe dieses Forums), um automatische Druckvorgänge realisieren zu können.

Hier der Link zum letzten Thread:
Druckername per VBA-Script

Ich kopiere hier einmal das von der betroffenen Kollegin hauptsächlich benutzte Makro ein:

Sub D_ePost()
'  
    ActivePrinter = "E-POSTBUSINESS BOX Printer"  
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _  
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _  
        Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, _
        PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
'  
    ActivePrinter = "\\dasfile\Maier_Blanko"  
'  
End Sub

Zunächst war der Drucker "\\dasfile\Maier_Blanko" der Standarddrucker.
Dann erfolgt über das Makro zunächst der Druck auf dem ePost-Drucker und am Ende wird wieder der ursprüngliche Standarddrucker gesetzt.

Das funktioniert alles prima.

ABER:
Wenn die Kollegin dann am nächsten Tag auf den Terminalserver zugreift und das besagte Programm startet, erhält sie die Fehlermeldung

--> "Es wurde kein Standarddrucker gewählt".

Dann muss sie über "Start \ Geräte und Drucker" manuell einmal einen anderen Drucker als Standarddrucker wählen und anschließend wieder den gewünschten Drucker "\\dasfile\Maier_Blanko".

Erst dann kann sie die Fehlermeldung wegklicken und wieder normal arbeiten.
Das Problem taucht dann auch nicht mehr auf... bis zum nächsten Tag...

Kann es sein, dass vielleicht über die letzte Code-Zeile "ActivePrinter = "\\dasfile\Maier_Blanko" der Standarddrucker nicht korrekt oder dauerhaft... oder wie auch immer... gesetzt wird?
Könnte man ggf. über den Einsatz von "strPrinterDefault" im Code etwas erreichen?

Danke und schöne Grüße,
imebro
Mitglied: emeriks
emeriks 04.02.2015 um 16:37:33 Uhr
Goto Top
Benutzerprofil löschen ist ganz sicher "mit Kanonen auf Spatzen geschossen" face-wink
Mitnichten ....

Es funktionierte ja bis vor ein paar Tagen, wo ich für die Kollegen ein Makro geschrieben hatte (mit Hilfe dieses Forums), um automatische Druckvorgänge realisieren zu können.
Nette "Randinformation".

Versuche mal, den Standarddrucker abschließend so zu setzen:
CreateObject("WScript.Network").SetDefaultPrinter "\\dasfile\Maier_Blanko"  
Ändert das was?

E.
Mitglied: 37414
37414 06.02.2015 aktualisiert um 09:25:05 Uhr
Goto Top
Danke Dir "emeriks"...

Habe diese Codezeile jetzt mal an beiden Rechnern eingetragen und beim Test funktionierte es damit face-wink
Mal abwarten, ob es durchgehend so bleibt.
Am Montag / Dienstag weiß ich dann mehr, wenn die beiden Kolleginnen wieder da sind.

Jemand Anderes hatte mir den Tipp gegeben, den kompletten Code wie folgt abzuändern:

Sub D_ePost()
'  
    Static sPrinter As String
 
    IF sPrinter = "" THEN sPrinter = "\\dasfile\Maier_Blanko"  
'  
    ActivePrinter = "E-POSTBUSINESS BOX Printer"  
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _  
        wdPrintDocumentContent, Copies:=1, Pages:="", _  
        PageType:=wdPrintAllPages, _
        Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, _
        PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
'  
    ActivePrinter = sPrinter
'  
End Sub

Wäre das sinnvoll oder soll ich es lieber so lassen, wie es im Moment ist?

Danke und schöne Grüße,
imebro