Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Standartdrucker automatisch umschalten lassen

Standartdrucker automatisch umschalten lassen
23.06.2019 11:10:04
Anton
Guten Morgen liebes ExcelForum,
ich habe da wieder ein kleine Problem, aber weiss überhaupt nicht wie ich das umsetzten könnte, habe auch versucht mit Schlagwörter etwas in Google zu finden, aber irgendwie ist es nicht wo nach ich suche. Vielleicht ist es auch nicht möglich, aus dem Grund suche ich bei euch Profis um Rat.
Ich möchte in mein Excel Programm folgendes haben:
1. Beim starten des Programms soll abgefragt werden ob ich über LAN (in der Firma) o. über WLAN VPN (Mobiler Router) verbunden bin und ggf. den Drucker in der Firma als Standartdrucker setzten o. den Mobilen Drucker extern als Standart definieren.
Ist sowas möglich und wenn ja wie?
Es gibt ja eine Möglichkeit unter Windows 7/10 selbst, das man bei den Druckereinstellungen, es definiert, was ich auch versucht habe, aber leider nicht klappen möchte.
Ich bedanke mich im Voraus für eure Unterstützung.
MfG
Anton

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 11:17:20
Hajo_Zi
Hallo Anton,
das erste ist ja eine Inputbox.
umstellen
Sub Faxen()
Dim savPrinter As String
savPrinter = ActivePrinter      ' aktuellen Drucker auslesen
ActivePrinter = "WinFax Pro 9.0"    ' anderen Drucker einstellen
ActiveSheet.PrintOut
ActivePrinter = savPrinter              ' Drucker wieder zurückstellen
End Sub

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Teil 1 MsgBox
23.06.2019 11:19:47
Hajo_Zi

Sub Test()
If MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNo + vbQuestion, "Löschabfrage ?" _
) = vbYes Then
MsgBox "Ja"
Else
MsgBox "Nein"
End If
End Sub
Gruß Hajo
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 11:18:54
Rainer
Hallo Anton,
ich glaube fast, dein Goolge ist defekt. Evtl. mal jemanden drüber gucken lassen. ;-) (Das war ein Schetz zum Sonntag.)
Druckerdialog:
Application.Dialogs(xlDialogPrinterSetup).Show
Drucker verfügbar?
Private Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal lpDriverName As String,  _
ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long) As Long
Public Function GetPDC(ByVal strPrinter As String) As Long
GetPDC = CreateIC("WINSPOOL", strPrinter, vbNullString, 0&)
End Function
Sub Look_For_Printer()
printer_name = "Name found in the print setup drop down"
If GetPDC( printer_name ) = 0 Then
msgbox("This printer is not on this computer")
end if
End Sub

Drucker definieren:
dim myprinter as string
dim printer_name as sttring
printer_name ="name goes here"
myprinter = Application.ActivePrinter
Change_Form.PrintOut Preview:=False, ActivePrinter:=printer_name, PrintToFile:=True,  _
PrToFileName:=PSFileName
Application.ActivePrinter = myprinter
Hilft das schon weiter?
Gruß, Rainer
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 14:53:00
Anton
Hallo Rainer,
vielen Dank für deinen Beitrag, aber irgendwie komme ich nicht dahinter was der Code machen soll.
Vllt, habe ich es vorhin auch nicht richtig eklärt und sorry auch wenn es ein Witz am Sonntag war, ich finde immer noch nichts mit Google was zutreffend währe.
Auflisten aller Drucker finde ich.
Ich probiere es nochmal :-)
Wenn ich das Formular öffne sollen alle meine aktiven Drucker eingelesen werden und mit dem "Drucker_1_LAN" verglichen werden ob es online oder offline ist. Falls es offline ist, bin ich Mobile unterwegs und das Programm soll "Drucker_1_Mobil" auf Standart Drucker setzte.
Wenn "Drucker_1_Mobile" nicht aktiv bzw. offline ist, soll der "Drucker_1_LAN" als Standartdrucker gesetzt werden.
Ist das denn möglich?
Danke euch!
LG Anton
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 15:13:37
Rainer
Hallo Anton,
benutze zuerst den 2. Code. Damit prüfst du, ob "Drucker_LAN" verfügbar ist.
Dann kannst du mit dem dritten Teil den Drucker definieren.
Probier mal so:
Private Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal lpDriverName As String,  _
_
ByVal lpDeviceName As String, ByVal lpOutput As String, ByVal lpInitData As Long) As Long
Public Function GetPDC(ByVal strPrinter As String) As Long
GetPDC = CreateIC("WINSPOOL", strPrinter, vbNullString, 0&)
End Function
Sub Drucker()
'Zeige Druckerauswahl
'Application.Dialogs(xlDialogPrinterSetup).Show
Dim myprinter As String
Dim printer1 As String
Dim printer2 As String
printer1 = "Drucker_1_LAN"
printer2 = "Drucker_1_mobil"
myprinter = Application.ActivePrinter
If GetPDC(printer1) = 0 Then
MsgBox (printer1 & " nicht verfügbar!")
ActiveSheet.PrintOut Preview:=False, _
ActivePrinter:=printer2, _
PrintToFile:=True, _
PrToFileName:=PSFileName
Else
MsgBox (printer1 & " gefunden!")
ActiveSheet.PrintOut Preview:=False, _
ActivePrinter:=printer1, _
PrintToFile:=True, _
PrToFileName:=PSFileName
End If
Application.ActivePrinter = myprinter
End Sub
Gruß, Rainer
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 15:56:13
Anton
Hallo Rainer,
danke dir nochmals für deine tolle Unterstützung, aber dein Programm Listet beide Drucker auf ob offline oder online.
Nun habe ich doch noch etwas gefunden in Google.... musste nur anders suchen.
Aber irgendiwie bekomme ich den Standartdrucker nicht umgestellt, kannst du mir dabei helfen?
Das Programm frägt den Status des Druckers ab... nun habe ich unter der Abfrage 79 - Status gefunden, was sich unterscheidet, wenn Drucker online (Unknown) und Drucker offline (Degraded) ist.
Wie du siehst frage ich jetzt mit der If Anweisung das ab und möchte den anderen "Beispieldrucker" als Standart setzte. Aber das funktioniert nicht, wenn ich unter Windows Drucker Eiunstellungen gehe, dann ist der grüne Kreis immer noch am offline Drucker.
Hast du eine Idee?

Private Sub CommandButton7_Click()
'Damit kann man Arbeiten
MsgBox Application.ActivePrinter
Dim objWMI As Object, objItem As Object, i, c
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). _
ExecQuery("Select * from Win32_Printer where Name='Brother MFC-J4410DW Printer'")
On Error Resume Next
For Each objItem In objWMI
For Each i In objItem.properties_
c = c + 1
Cells(c, 1) = i.name
Cells(c, 2) = i.Value
If i.name = "Status" And i.Value = "Degraded" Then
Application.ActivePrinter = "Brother MFC-J4410DW Printer (Kopie 1)"
MsgBox c & " - " & i.name & " - " & i.Value & vbLf & Application.ActivePrinter
End If
Next
Next
Set objWMI = Nothing
End Sub
Vielen lieben Dank.
LG Anton
Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 21:41:15
Rainer
Hallo Anton,
habe jetzt noch ein wenig probiert. Bezüglich des Druckerstatus ist entweder mein Samsung Drucker ein mieses Drecksstück oder es ist eben hoffnungslos, diesen Status abzufragen. Er ist ebenfalls immer da, auch ohne Stromkabel...
Aber eine Variante hatte Erfolg, man kann es (bei Netzwerkdruckern) mit einem Ping versuchen:
Function IsConnectible(sHost, iPings, iTO)
' Returns True or False based on the output from ping.exe
' Works an "all" WSH versions
' sHost is a hostname or IP
' iPings is number of ping attempts
' iTO is timeout in milliseconds
' if values are set to "", then defaults below used
Dim nRes
If iPings = "" Then iPings = 1 ' default number of pings
If iTO = "" Then iTO = 550     ' default timeout per ping
With CreateObject("WScript.Shell")
nRes = .Run("%comspec% /c ping.exe -n " & iPings & " -w " & iTO _
& " " & sHost & " | find ""TTL="" > nul 2>&1", 0, True)
End With
IsConnectible = (nRes = 0)
End Function
Sub Drucker()
'Zeige Druckerauswahl
'Application.Dialogs(xlDialogPrinterSetup).Show
Dim myprinter As String
Dim printer1 As String
Dim printer2 As String
printer1 = "Drucker_1_LAN"
printerIP = "192.168.111.111"
printer2 = "Drucker_1_mobil"
myprinter = Application.ActivePrinter
If IsConnectible(printerIP, 2, 100) = False Then
MsgBox (printer1 & " nicht verfügbar!")
ActiveSheet.PrintOut Preview:=False, _
ActivePrinter:=printer2, _
PrintToFile:=True, _
PrToFileName:=PSFileName
Else
MsgBox (printer1 & " gefunden!")
ActiveSheet.PrintOut Preview:=False, _
ActivePrinter:=printer1, _
PrintToFile:=True, _
PrToFileName:=PSFileName
End If
Application.ActivePrinter = myprinter
End Sub

Anzeige
AW: Standartdrucker automatisch umschalten lassen
23.06.2019 22:48:14
Rainer
Noch bezüglich deiner Frage... hatte ich übersehen, sorry.
Ich vermute (weiß es aber nicht), dass nur der Drucker für MS Excel geändert wird. Dann siehst du in den Druckereinstellungen keinen Unterschied. In meinem Code wird der "ActivePrinter" nur für den einen Druckauftrag geändert und danach der Standard wieder hersgestellt.
Wenn es denn erforderlich ist, den Windows Standard Drucker zu ändern:
Sub DefaultPrinter()
CreateObject("WScript.Network").SetDefaultPrinter "DeinDrucker"
End Sub
Gruß, Rainer
AW: Standartdrucker automatisch umschalten lassen
24.06.2019 19:58:29
Anton
Hallo Rainer,
dein Code funktioniert wunderbar für die Standarddrucker Umstellung.
Vielen herzlichen Dank.
LG Anton
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige