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-Key: 369267

Url: https://administrator.de/contentid/369267

Printed on: April 23, 2024 at 15:04 o'clock

Member: emeriks
emeriks Mar 26, 2018 at 13:15:48 (UTC)
Goto Top
Hi,
was kommt bei ...?
Application.ActivePrinter = "Canon MF620C Series UFRII LT"

E.
Member: kono49
kono49 Mar 26, 2018 at 13:25:32 (UTC)
Goto Top
Laufzeitfehler 1004:
Die Methode 'ActivePrinter' für das Objekt '_Global' ist fehlgeschlagen.
Member: kono49
kono49 Mar 26, 2018 at 13:26:16 (UTC)
Goto Top
Windows 10 64-Bit
Office 365 32-Bit
Member: emeriks
emeriks Mar 26, 2018 at 14:43:08 (UTC)
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.
Member: kono49
kono49 Mar 26, 2018 at 14:51:22 (UTC)
Goto Top
Sorry, hatte ich übersehen.

Die Methode "ActivePrinter' für das Objekt '_Application' ist fehlgeschlagen.
Mitglied: 135799
135799 Mar 26, 2018 updated at 15:08:46 (UTC)
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
Member: kono49
kono49 Mar 26, 2018 at 15:08:38 (UTC)
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
Mitglied: 135799
Solution 135799 Mar 26, 2018 updated at 15:11:55 (UTC)
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.
Member: kono49
kono49 Mar 26, 2018 at 15:29:43 (UTC)
Goto Top
Danke, jetzt funktioniert es!
Member: kono49
kono49 Mar 28, 2018 at 06:11:12 (UTC)
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
Member: emeriks
emeriks Mar 28, 2018 updated at 06:27:24 (UTC)
Goto Top
Der Fehler?
Ja, weil Du mal mit cDrucker und mal mit sDrucker arbeitest. "Ändern" mit selben Namen wird wohl nicht gehen.
Mitglied: 135799
135799 Mar 28, 2018 updated at 07:32:18 (UTC)
Goto Top
Da hat wohl einer seinen Kaffee übersprungen, oder das Nasenfahrrad verlegt face-smile
Member: kono49
kono49 Mar 28, 2018 at 09:05:55 (UTC)
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.
Member: emeriks
emeriks Mar 28, 2018 at 09:28:01 (UTC)
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.
Member: kono49
kono49 Mar 28, 2018 at 09:43:42 (UTC)
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.
Member: emeriks
emeriks Mar 28, 2018 at 10:01:44 (UTC)
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?
Member: kono49
kono49 Mar 28, 2018 at 10:38:05 (UTC)
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.
Mitglied: 135799
135799 Mar 28, 2018 updated at 11:52:01 (UTC)
Goto Top
Bau dir einfach ein Add-on *.xlam, fertig ist die Soße, AutoOpen ist sowas von altbacken.