Outlook: Aktiven Drucker mittels VBA ändern

  • Thread starter Thread starter Markus Zänglein
  • Start date Start date
M

Markus Zänglein

Hallo NG,

Ich würde gerne über VBA Makros den Ausdruck einer Mail auf einem bestimmten
Drucker, zb. PDF Writer veranlassen.

Outlook druckt aber gewöhnlich immer am Windows Standarddrucker aus.
Dies ausnutzend, ändere ich den Standarddrucker, leite den Ausdruck ein und
setze den Drucker anschließend zurück.

Dieses Vorgehen ist zwar etwas unhandlich, aber wie sich jetzt erweist,
leider auch
nicht ganz zuverlässig:

Sobald der Benutzer manuell den Druckdialog aufgerufen hat und eine eigene
Druckerauswahl vorgenommen hat, reagiert Outlook nicht mehr auf eine
Änderung des Standarddruckers.
Nur ein Neustart der Anwendung löst dieses Problem.

Gibt es womöglich noch andere Lösungen, die Outlook dazu bringen, ähnlich
wie in Word, einen aktiven Drucker festlegen zu können?

Da auch der MS Support keine bessere Idee hatte, wäre ich für jede noch so
kleine Anregung dankbar.

mfg

Markus Zänglein
 
Hallo Markus,
Ich würde gerne über VBA Makros den Ausdruck einer Mail auf einem bestimmten
Drucker, zb. PDF Writer veranlassen.

OL-VBA bietet leider keinen direkten Zugriff auf ein Printer-Objekt.
Wenn Du auch Word auf dem System hast, dann hilft Dir vielleicht
folgender Artikel weiter:
http://www.mvps.org/word/FAQs/MacrosVBA/ChangeCurPrinter.htm.

Falls Du zusätzlich z.B. Visual Basic besitzt und diesen Teil Deiner
Routine in eine VB-DLL auslagern könntest, da gäbe es dann schon mehr
Möglichkeiten.
 
Hallo Michael,

danke für den Hinweis
Word ist natürlich verfügbar, aber ich denke nicht, dass dies das Problem
lösen könnte.

Ich habe ja bereits mit Win32 API in der Registry den Drucker geändert und
auch WM_WININICHANGE Msg verschickt.
Das dumme ist nur, dass Outlook nicht in jedem Fall auf dem Standarddrucker
ausdruckt.
Sobald der Benutzer manuell den Druckdialog aufruft und die Druckerauswahl
ändert, bringt eine Umstellung des Standarddruckers nix mehr.

Mir ist nicht klar, was eine Auslagerung in eine VBA DLL hier viel helfen
könnte.
Wenn du trotzdem einen Lösungsansatz siehtst, dann lasse es mich bitte
wissen

mfg

MZ
 
Back
Top