Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Drucker ansprechen

VBA: Drucker ansprechen
Torsten
Hallo beisammen,
mit folgendem Code spreche ich bei einem User einen bestimmten Drucker im Netzwerk an
Sheets("LNe").PrintOut Copies:=1, ActivePrinter:= _
"\\DEPRINT05\DEDE24 auf Ne07:", Collate:=True
wobei der Term "Ne07" scheinbar den Port anspricht. Ich spreche hier einen ganz bestimmten Drucker an, weil erst im 2. Schritt der Standarddrucker eine 2. Kopie ausdruckt. Leider ändern sich dann und wann wieder die Portbezeichnungen (z.B. durch das Einbinden eines weiteren Druckers beim User), sodaß der nächste Druckvorgang diesen bestimmten Drucker nicht mehr erkennt. Gibt eine Möglichkeit, einen Drucker ohen Angabe des Ports direkt anzusprechen oder ist das ohne Portangabe nicht möglich?
Vielen Dank für Eure Tips im voraus.
Gruß
Torsten
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 09:45:41
Marc
Moin!
Auch bei Siemens?
Im Grunde ist es ganz einfach. Geh alle Zahlen von 1 bis 9 durch. Wenn der Drucker auf dem Server existiert, wird der genommen. Existiert er nicht, dann wird der nächste Punkt genommen.
For x = 1 To 9 'Druckerserver suchen, wechselt schonmal
On Error Resume Next
Application.ActivePrinter = "\\DEPRINT05\DEDE24 auf File auf Ne0" & x & ":"
Next x
Versuchs mal. Bei mir war der Part "\\DEPRINT05\" nicht notwendig.
Gruß, Marc
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 10:31:17
Torsten
Hallo Marc,
(nee, bin nicht bei Siemens)
zunächst mal schönen Dank für Deine Rückmeldung. Aber die Sache ist wohl ein bißchen komplexer....
Wenn ich das richtig verstanden habe, wird bei Deiner Lösung der erste vorhandene Drucker gewählt, der bei dem User eingebunden ist. Das ist aber so nicht gewollt, weil der User in unserem Trainscenter in Norddeutschland seine Leistungsnachweise erstellt - und zwar 2 Kopien: eine für ihn und eine für uns (daß heißt für unser Headquarter, das in Westdeutschland sitzt). Bei Deiner Lösung werden dann die Kopien möglicherweise irgendwo ausgedruckt (ich weiß natürlich nicht, welche Drucker alle bei dem User sonst noch eingebunden sind), nur nicht bei uns. So sieht der Code zur Zeit aus...
Sheets("LNi").PrintOut Copies:=1, ActivePrinter:= _
"\\DEPRINT05\DEDE24 auf Ne07:", Collate:=True
'Drucker Headquarter
Sheets("LNi").PrintOut Copies:=1, ActivePrinter:= _
"\\deprint01\DED060S auf Ne05:", Collate:=True
'Drucker bei Trainingscenter
Gibt's für den Sachverhalt auch eine Lösung?
Gruß
Torsten
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 11:15:38
bst
Auch Hallo,
bei .PrintOut kannst Du den Port einfach weglassen. Versuche einfach mal:
Sheets("LNi").PrintOut Copies:=1, ActivePrinter:= "\\DEPRINT05\DEDE24", Collate:=True
'Drucker Headquarter
Sheets("LNi").PrintOut Copies:=1, ActivePrinter:= "\\deprint01\DED060S", Collate:=True
'Drucker bei Trainingscenter
cu, Bernd
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 12:04:34
Torsten
Hallo Bernd,
auch Dir vielen Dank für Deine Rückmeldung.
Leider erhalten wir bei Deinem Vorschlag eine Fehlermeldung:
"Die Pintout-Methode des Worksheet-Objektes konnte nicht ausgeführt werden"
Scheinbar funktioniert's nicht ohne Port-Angabe.
Gruß
Torsten
AW: VBA: Drucker ansprechen
13.05.2011 13:32:04
Marc
Hallo!
Für gewöhnlich (und ich meine SEHR gewöhnlich) sind die Drucker im Netzwerk eindeutig benannt. Es kann diesen Drucker nur 1x geben. Daher kannst du die Methode so ausführen, da es immer nur 1 Treffer für den Drucker geben wird.
Gruß, Marc
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 14:14:46
Torsten
Hallo Marc,
so sieht der Code zur Zeit aus:
Dim P As Integer
For P = 1 To 9 'Druckerserver suchen, wechselt dann und wann
On Error Resume Next
Application.ActivePrinter = "\\DEPRINT05\DEDE24 auf File auf Ne0" & P & ":"
Next P
Dim P2 As Integer
For P2 = 1 To 9 'Druckerserver suchen, wechselt dann und wann
On Error Resume Next
Application.ActivePrinter = "\\deprint01\DED060S auf File auf Ne0" & P2 & ":"
Next P2
Ausgedruckt wurde aber auf keinem der beiden Drucker. Habe ich etwas falsch gemacht?
Gruß
Torsten
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 14:24:59
bst
Auch nochmals Hallo,
das funktioniert hier nun schon. Und es keinesfalls notwendig den Port anzugeben.
Damit das funktioniert muss der Drucker natürlich in Start-Systemsteuerung-Drucker auftauchen und mit dem korrekten Namen angesprochen werden.
Der lässt sich aber einfach herausfinden, einfach diesen Drucker (kurzzeitig) in der Systemsteuerung als Standarddrucker definieren und dann im VBA-Direktfenster anzeigen lassen:
?activeprinter
cu, Bernd
Anzeige
AW: VBA: Drucker ansprechen
13.05.2011 14:41:58
Torsten
Hallo Bernd,
die angesprochenen Drucker sind regelgerecht eingebunden und die genauen bezeichnungen habe ich über die Makro-Rekorder-Funktion herausbekommen. Soweit ist alles in Ordnung.
Gruß
Torsten
AW: VBA: Drucker ansprechen
13.05.2011 14:52:03
bst
Hi,
und hmmm, das verstehe ich nicht.
Da ich das noch nicht erwähnt hatte, die Portangabe darf man nur bei .PrintOut weglassen, nicht aber beim Wechseln des Standarddruckers. D.h. :
?ActivePrinter
\\myserver\Kyocera schnickschnack auf Ne04:
' ...
ActivePrinter = "\\myserver\Kyocera schnickschnack"
funktioniert nicht. Hier braucht man den Port.
Activesheet.PrintOut ActivePrinter:="\\myserver\Kyocera schnickschnack"
funktioniert hier sehr wohl. Natürlich unabhängig vom aktuell eingestellten Standarddrucker.
cu, Bernd
Anzeige
VBA: Drucker ansprechen
13.05.2011 19:43:44
Anton
Hallo Torsten,
schau , ob du was hiermit anfangen kannst.
Anton
AW: VBA: Drucker ansprechen
16.05.2011 11:03:31
Torsten
Hallo Anton,
besten Dank für Deine Rückmeldung.
Im Moment habe ich leider keine Zeit, das zu probieren. Vielleicht komme ich später mal dazu.
Gruß
Torsten
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Drucker mit VBA ansprechen: Tipps und Tricks


Schritt-für-Schritt-Anleitung

Um einen Drucker über VBA anzusprechen, kannst du den folgenden Code verwenden:

Sheets("LNe").PrintOut Copies:=1, ActivePrinter:="\\DEPRINT05\DEDE24 auf Ne07:", Collate:=True

Hierbei wird der Drucker über den Netzwerkpfad angesprochen. Stelle sicher, dass der Drucker korrekt in der Systemsteuerung eingebunden ist. Wenn der Port nicht notwendig ist, kannst du den Code wie folgt anpassen:

Sheets("LNi").PrintOut Copies:=1, ActivePrinter:="\\DEPRINT05\DEDE24", Collate:=True

Häufige Fehler und Lösungen

Ein häufiger Fehler ist die Fehlermeldung:

Die PrintOut-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.

Dieser Fehler tritt häufig auf, wenn der Drucker nicht richtig angesprochen wird. Überprüfe, ob:

  1. Der Drucker in der Systemsteuerung als Standarddrucker eingestellt ist.
  2. Der Druckername und der Netzwerkpfad korrekt sind. Um den aktiven Drucker herauszufinden, kannst du im VBA-Direktfenster folgendes eingeben:
?ActivePrinter

Falls der Port notwendig ist, stelle sicher, dass er im Code enthalten ist, wenn du den Standarddrucker wechselst.


Alternative Methoden

Eine alternative Methode, um Drucker zu finden, besteht darin, alle möglichen Drucker nacheinander anzusprechen. Ein Beispiel:

For x = 1 To 9
    On Error Resume Next
    Application.ActivePrinter = "\\DEPRINT05\DEDE24 auf Ne0" & x & ":"
Next x

Diese Schleife sucht nach dem Drucker auf verschiedenen Ports und wählt den ersten, der gefunden wird.


Praktische Beispiele

Hier sind einige Beispiele für das Ansprechen von Druckern mit VBA:

  1. Drucker im Headquarter ansprechen:

    Sheets("LNi").PrintOut Copies:=1, ActivePrinter:="\\deprint01\DED060S", Collate:=True
  2. Drucker im Trainingscenter ohne Port ansprechen:

    Sheets("LNi").PrintOut Copies:=1, ActivePrinter:="\\DEPRINT05\DEDE24", Collate:=True

Stelle sicher, dass die Drucker im Netzwerk eindeutig benannt sind, um Verwirrung zu vermeiden.


Tipps für Profis

  • Nutze den Befehl Application.ActivePrinter um den aktuellen Drucker zu setzen, bevor du den Druckbefehl ausführst.
  • Halte die Namen der Drucker in deiner Dokumentation aktuell, besonders wenn neue Drucker hinzugefügt oder bestehende umbenannt werden.
  • Teste deinen VBA-Code in einer sicheren Umgebung, bevor du ihn in einem produktiven Kontext einsetzt.

FAQ: Häufige Fragen

1. Warum kann ich den Drucker nicht ohne Port ansprechen?
Die Portangabe ist manchmal notwendig, insbesondere wenn der Drucker nicht eindeutig identifiziert werden kann.

2. Was kann ich tun, wenn die PrintOut-Methode nicht funktioniert?
Überprüfe die Druckereinstellungen in der Systemsteuerung und stelle sicher, dass der Drucker korrekt verbunden ist. Teste auch den Drucker über das VBA-Direktfenster.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige