Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
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 ändern

Standartdrucker ändern
08.12.2017 09:27:01
Torben
Hallo allerseits,
irgendwie macht mir gerade die Druckerwahl etwas Probleme.
Ich habe mehrere Drucker im Netzwerk und möchte nun mithilfe einer ComboBox den Standartdrucker ändern.
Mein Code:
Private Sub CommandButton1_Click()
Application.ActivePrinter = ComboBox1.Text
End Sub
Private Sub UserForm_Activate()
Dim objWMI As Object, colPrinters As Object, objPrinter As Object
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set colPrinters = objWMI.ExecQuery _
("Select * from Win32_PrinterConfiguration")
For Each objPrinter In colPrinters
ComboBox1.AddItem objPrinter.devicename
Next
ComboBox1.ListIndex = 0
End Sub

Bekomme die Fehlermeldung: Die Methode 'ActivePrinter' ist fehlgeschlagen.
Vielleicht stelle ich mir die Sache auch zu einfach vor.
Wäre nett wenn jemand mal drüberschauen könnte.
Danke schonmal
Grüße Torben

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Standartdrucker ändern
08.12.2017 10:24:24
Nepumuk
Hallo Torben,
da fehlt die Portangabe. Um den Default-Printer in Excel zu setzen ist z.B. das nötig:
Application.ActivePrinter = "PDF-Printer auf NE01"
Bei dir fehlt das "auf NExx"
Das ist dann nicht nötig wenn du per Makro druckst und dort den Drucker angibst. Z.B.:
ActiveSheet.PrintOut ActivePrinter:="PDF-Printer"
Wie du siehst, ist hierbei die Angabe des Printerports nicht notwendig.
Die Printerports kannst du nur aus der Registry auslesen.
Gruß
Nepumuk
AW: Standartdrucker ändern
08.12.2017 11:27:16
Torben
Guten Morgen Nepumuk,
Danke für die Aufklärung.
Ich lese mittlerweile die Printer mit den entsprechenden Ports in eine ListBox ein.
Dim WSHShell As Object
Dim objWMI As Object, objItem As Object
Set WSHShell = CreateObject("WScript.Shell")
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). _
ExecQuery("Select * from Win32_Printer")
With ListBox1
For Each objItem In objWMI
.AddItem objItem.Name & vbTab & Replace(WSHShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\ _
Windows NT\CurrentVersion\Devices\" & objItem.Name), "winspool,", "auf ")
Next objItem
End With
Das funktioniert soweit und zeigt mir auch die richtigen Ports an(allerdings mit ungewöhnlich unterschiedlichen leerzeichen)
ZDesigner GX430t    auf Ne00:
Microsoft XPS Document Writer auf Ne01:
KONICA MINOLTA bizhub 25e PCL6 auf Ne02:
HP LaserJet P4015 auf Ne03:
Fax auf Ne04:
Brother HL-4140CN auf Ne05:

Im Anschluss will ich mit
ActivePrinter = ListBox1.Value

Den Drucker als Standart zuweisen, was blöderweise wieder mit der Fehlermeldung
"Die Methode 'ActivePrinter' für das Objekt '_Global' ist fehlgeschlagen" endet.
Irgendwie sehen diese Leerzeichen zwischen Druckername und Port für mich verdächtig aus, bin aber auch kein Profi auf dem Gebiet :)
Vielleicht hat jemand ja schonmal ein ähnliches Problem gehabt.
Jedenfalls Danke für die Hilfe.
Gruß Torben
Anzeige
AW: Standartdrucker ändern
08.12.2017 11:30:49
Nepumuk
Hallo Torben,
ersetze vbTab durch " " dann sollte es passen.
Gruß
Nepumuk
AW: Standartdrucker ändern
08.12.2017 11:38:56
Torben
Hallo Nepumuk,
Funktioniert einwandfrei, dankeschön.
Gruß Torben

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige