kono49
Goto Top

Standarddrucker für alle Excelmappen per VBA ändern

Hallo, liebes Forum!

Ich möchte generell den Standarddrucker für alle Excelmappen beim öffnen ändern.
Bekomme das irgendwie nicht hin, was mache ich da falsch.
Die Zuweisung bringt einen Fehler: Laufzeitfehler 1004:
Die Methode 'ActivePrinter' für das Objekt '_Global' ist fehlgeschlagen.

Bitte um Hilfe.

Sub Auto_Open()
'
' Auto_öffnen Makro
'
MsgBox Application.ActivePrinter
ActivePrinter = "Canon MF620C Series UFRII LT"
End Sub

Content-ID: 369267

Url: https://administrator.de/forum/standarddrucker-fuer-alle-excelmappen-per-vba-aendern-369267.html

Ausgedruckt am: 23.04.2025 um 19:04 Uhr

emeriks
emeriks 26.03.2018 um 15:15:48 Uhr
Goto Top
Hi,
was kommt bei ...?
Application.ActivePrinter = "Canon MF620C Series UFRII LT"

E.
kono49
kono49 26.03.2018 um 15:25:32 Uhr
Goto Top
Laufzeitfehler 1004:
Die Methode 'ActivePrinter' für das Objekt '_Global' ist fehlgeschlagen.
kono49
kono49 26.03.2018 um 15:26:16 Uhr
Goto Top
Windows 10 64-Bit
Office 365 32-Bit
emeriks
emeriks 26.03.2018 um 16:43:08 Uhr
Goto Top
Ich glaube, Du missverstehst mich.
Ich will nicht wissen, was bei
ActivePrinter = "Canon MF620C Series UFRII LT"
(Dein Text)
kommt, sondern was bei
Application.ActivePrinter = "Canon MF620C Series UFRII LT"
(mein Text)
kommt.
kono49
kono49 26.03.2018 um 16:51:22 Uhr
Goto Top
Sorry, hatte ich übersehen.

Die Methode "ActivePrinter' für das Objekt '_Application' ist fehlgeschlagen.
135799
135799 26.03.2018 aktualisiert um 17:08:46 Uhr
Goto Top
Der Druckername stimmt zu 99,9% nicht 100%ig, denn zum Druckernamen gehört hier noch der Port in folgender Art und Weise (Port ist bei natürlich anzupassen!!).
Beispiel:
"HP Laserjet 1320 auf Ne02:"

Welcher Port das bei dir ist kannst du in der Registry nachlesen:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

Außerdem ist der Standarddrucker per Default der den Windows selbst hat, das für die Anwendung zu setzen bringt dir also nur was wenn der Drucker für Excel abweichen soll.

Schnuffi
kono49
kono49 26.03.2018 um 17:08:38 Uhr
Goto Top
Wo kann ich die genaue Druckerbezeichnung auslesen. Der Standarddrucker ist auf ein anderes Formular eingestellt und weicht für Excel ab.
Ich denke, ich komme der Sache schon näher. Danke
135799
Lösung 135799 26.03.2018 aktualisiert um 17:11:55 Uhr
Goto Top
Welchen Port du oben statt (Ne02) einsetzen musst steht hier:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
Aber nur das was nach dem Komma kommt.

Ich setze das aber selbst immer über WMI kurzerhand als Standard und danach wieder zurück.
kono49
kono49 26.03.2018 um 17:29:43 Uhr
Goto Top
Danke, jetzt funktioniert es!
kono49
kono49 28.03.2018 um 08:11:12 Uhr
Goto Top
Guten Morgen, ich habe jetzt ein anderes Problem:

Wenn ich das Macro manuell aufrufe funktioniert es, wenn ich es im Excel-Startverzeichnis kopiere und Excel öffne kommt wieder der Fehler.

Mein Wunsch wäre es, den Standarddrucker generell für alle Exceltabellen einzustellen.

Nachstehend meine VBA-Routine.

Sub Auto_Open()
'
' Auto_öffnen Makro
'
Const cDrucker = "MF620C Series auf Ne02:"
Dim sDrucker As String
sDrucker = Application.ActivePrinter
MsgBox sDrucker
Application.ActivePrinter = sDrucker
MsgBox Application.ActivePrinter
Application.ActivePrinter = sDrucker
End Sub
emeriks
emeriks 28.03.2018 aktualisiert um 08:27:24 Uhr
Goto Top
Der Fehler?
Ja, weil Du mal mit cDrucker und mal mit sDrucker arbeitest. "Ändern" mit selben Namen wird wohl nicht gehen.
135799
135799 28.03.2018 aktualisiert um 09:32:18 Uhr
Goto Top
Da hat wohl einer seinen Kaffee übersprungen, oder das Nasenfahrrad verlegt face-smile
kono49
kono49 28.03.2018 um 11:05:55 Uhr
Goto Top
Mit dem sDrucker war Absicht. Ich wollte Eingabefehler des Druckernamens vermeiden und dokumentieren, dass der Befehl
Application.ActivePrinter = sDrucker
den Fehler bringt obwohl er vorher in einen String ausgelesen wurde.
Die Methode 'ActivePrinter' für das Object Application' ist fehlgeschlagen.'

Möchte wenn es funktioniert nru die Zuweisung von sDrucker auf cDrucker ändern.

Danke für die weitere Hilfe.
emeriks
emeriks 28.03.2018 um 11:28:01 Uhr
Goto Top
Na ja.
Ich habe mir Excel VBA jetzt nicht extra angeschaut, aber ich kann mir absolut vorstellen, dass der meckert, wenn Du als aktiven Drucker denselben wie aktuell eingestellt setzt. Also keine Änderung vornimmst.

sDrucker = Application.ActivePrinter --> speichert aktuellen Drucker in sDrucker
MsgBox sDrucker
Application.ActivePrinter = sDrucker --> setzt den aktuellen Drucker sofort wieder auf sDrucker, ohne dass der zwischendurch geändert wurde. Du willst hier aber bestimmt auf cDrucker (C !) ändern.
kono49
kono49 28.03.2018 um 11:43:42 Uhr
Goto Top
mit cDrucker bringt er den gleichen Fehler.

Das mit dem sDrucker war nur um zu dokumentieren, dass es kein Formalfehler eines falschen Druckernamens etc. ist.
emeriks
emeriks 28.03.2018 um 12:01:44 Uhr
Goto Top
Das wird jetzt Kaffeesatzlesen.
Was steht denn in sDrucker, nachdem du ActivePrinter ausgelsen hast. Stimmt dieser Wert überhaupt? Ist dieser Drucker denn verbunden? An diesem Port?
kono49
kono49 28.03.2018 um 12:38:05 Uhr
Goto Top
in sDrucker steht der derzeitige Standarddrucker:
Microsoft Print to PDF auf Ne01:

Die Zuweisung
Application.ActivePrinter = "Druckername"
bringt den Fehler wenn es in Auto_open angeführt wird, wird das Makro über die Menüleiste gestartet funktioniert es.

Meiner Meinung nach liegt das Problem nicht beim Druckernamen sondern ist der Activprinter zum Zeitpunkt von Auto_Open nicht verfügbar.
Ich suche eine Möglichkeit generell den Standarddrucker automatisch in Excel zu ändern. Es gibt eine große Anzahl an Excel-Tabellen und die sollen alle auf einem bestimmten Drucker mit einem bestimmten Formular gedruckt werden. In Word war es sehr einfach in Normal.dot den Drucker einzustellen. So was ähnliches hätte ich gerne auch in Excel.
135799
135799 28.03.2018 aktualisiert um 13:52:01 Uhr
Goto Top
Bau dir einfach ein Add-on *.xlam, fertig ist die Soße, AutoOpen ist sowas von altbacken.