Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Ausdruck auf verschiedenen Druckern

Forumthread: Ausdruck auf verschiedenen Druckern

Ausdruck auf verschiedenen Druckern
30.08.2025 12:36:34
Dirk
Hallo liebe VBA-Experten,

ich hoffe, daß ihr mir weiter helfen könnt. In meinem Workbook gibt es verschiedene Tabellenblätter, die per VBA auf jeweils verschiedenen Netzwerkdruckern ausgegeben werden sollen. Die Ausgabe erfolgt aber jeweils über den Standard-Drucker.

Datei im Anhang !

https://www.herber.de/bbs/user/178779.xlsm

Vielen Dank im Voraus

Dirk
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausdruck auf verschiedenen Druckern
30.08.2025 15:07:40
ralf_b
ich würds vielleicht so machen, mittels Funktion, die den System Standarddrucker ändert.
Sub Print002()

Dim Standarddrucker As String
Standarddrucker = Application.ActivePrinter

If changePrinter(Worksheets("Einstellungen").Range("A4").Text) Then
Worksheets("Laufblatt").PrintOut Copies:=1
changePrinter Standarddrucker
Else
MsgBox "Drucker nicht gefunden- Blatt nicht gedruckt.", vbCritical + vbOKOnly
End If

End Sub

Function changePrinter(sPrinter As String) As Boolean
Dim bfound As Boolean
Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
For Each objItem In objWMI
' If objItem.Name = sPrinter Then 'druckername ist identisch mit Text
If InStr(1, sPrinter, objItem.Name) > 0 Then 'druckername kommt im Text vor
objItem.SetDefaultPrinter
bfound = True
Exit For
End If
Next

changePrinter = bfound
Set objWMI = Nothing
Set objItem = Nothing
End Function


oder so ohne den systemdrucker zu ändern. hier wird nur der korrekte Name ermittelt und verwendet.


Sub Print03()
Dim sTempdrucker As String
sTempdrucker = Worksheets("Einstellungen").Range("A4").Text

If getPrinterName(sTempdrucker) Then
Worksheets("Laufblatt").PrintOut Copies:=1, ActivePrinter:=sTempdrucker
Else
MsgBox "Drucker nicht gefunden- Blatt nicht gedruckt.", vbCritical + vbOKOnly
End If

End Sub

Function getPrinterName(ByRef sPrinter As String) As Boolean
Dim bfound As Boolean
Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
For Each objItem In objWMI
If InStr(1, sPrinter, objItem.Name) > 0 Then 'druckername kommt im Text vor
sPrinter = objItem.Name
bfound = True
Exit For
End If
Next

getPrinterName = bfound
Set objWMI = Nothing
Set objItem = Nothing
End Function

ist aber ungetestet !
Anzeige
AW: Ausdruck auf verschiedenen Druckern
30.08.2025 15:26:42
Dirk
Hallo Ralf,

habe es gerade getestet, ich bekomme aber eine Fehlermeldung,
daß die Variable objWMI in der Funktion nicht definiert ist !

Function getPrinterName(ByRef sPrinter As String) As Boolean
Dim bfound As Boolean
Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
For Each objItem In objWMI
If InStr(1, sPrinter, objItem.Name) > 0 Then 'druckername kommt im Text vor
sPrinter = objItem.Name
bfound = True
Exit For
End If
Next

getPrinterName = bfound
Set objWMI = Nothing
Set objItem = Nothing
End Function

Danke im Voraus

Dirk
Anzeige
AW: Ausdruck auf verschiedenen Druckern
30.08.2025 15:48:41
ralf_b
na dann definiere sie doch einfach
z.b. Dim objWMI As Object, objItem As Object
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18