{"id":55000312,"date":"2022-08-01T00:00:00","date_gmt":"2026-02-06T10:22:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=312"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Outlook_Application_Startup_feuert_nicht","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Outlook_Application_Startup_feuert_nicht\/","title":{"rendered":"Outlook: Application_Startup feuert nicht"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/115470cd9d33404082d25b43196b89a7\" width=\"1\" height=\"1\" alt=\"\"><b>Das Ereignis &#8220;Startup&#8221; des &#8220;Application&#8221;-Objekts von Outlook ist f&uuml;r viele benutzerdefinierte Erweiterungen von Outlook essenziell, da es die M&ouml;glichkeit bietet, direkt beim Starten von Outlook VBA-Code auszuf&uuml;hren. Damit lassen sich f&uuml;r verschiedene Anwendungen wichtige Automatismen ansto&szlig;en &#8211; zum Beispiel das Deklarieren und Initialisieren von Objektvariablen, f&uuml;r die Ereignisse implementiert werden sollen. Leider passiert es gelegentlich, dass die Ereignisprozedur Application_Startup beim Starten von Outlook nicht aufgerufen wird. Woran das liegt und wir dies &auml;ndern, zeigt der vorliegende Artikel.<\/b><\/p>\n<p>Du hast das Ereignis Application_Startup im Modul ThisOutlookApplication implementiert und wenn Du Outlook startest, wird diese nicht ausgel&ouml;st? Das kann verschiedene Gr&uuml;nde haben:<\/p>\n<ul>\n<li>Die Makroeinstellungen f&uuml;r Outlook erlauben die Ausf&uuml;hrung von Makros nicht. Der Klassiker, der gerade bei neu installierten Office-Anwendungen auftritt.<\/li>\n<li>Outlook ist bereits ge&ouml;ffnet, gegebenenfalls auch unsichtbar. In diesem Fall kann <b>Application_Startup <\/b>nicht ausgel&ouml;st werden, weil Outlook ja gar nicht neu startet. Wenn Outlook per Code initialisiert wird, feuert <b>Application_Startup <\/b>&uuml;brigens nicht.<\/li>\n<li>Ein spezieller Registry-Eintrag, den Outlook beim Starten abfragt, weist einen Wert auf, der das Ausf&uuml;hren von <b>Application_Startup <\/b>unterbindet. <\/li>\n<\/ul>\n<p>In den folgenden Abschnitten schauen wir uns die L&ouml;sungen f&uuml;r diese Probleme an.<\/p>\n<h2>Makroeinstellungen kontrollieren und anpassen<\/h2>\n<p>Wenn <b>Application_Startup <\/b>beim &Ouml;ffnen von Outlook nicht ausgef&uuml;hrt wird, solltest Du als Erstes die Makroeinstellungen pr&uuml;fen. Dazu brauchst Du gar nicht erst den Optionen-Dialog zu &ouml;ffnen &#8211; wechsle einfach zum VBA-Editor (<b>Alt + F11<\/b>), &ouml;ffne das Modul <b>ThisOutlookApplication<\/b>, platziere die Einf&uuml;gemarke in der Prozedur <b>Application_Startup <\/b>und bet&auml;tige die Taste <b>F5<\/b>.<\/p>\n<p>Wenn die Prozedur nun auch nicht ausgef&uuml;hrt wird, sondern die Meldung aus Bild 1 erscheint, hast Du schon die L&ouml;sung des Problems gefunden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_312_001.png\" alt=\"Meldung beim Versuch, ein Makro trotz Deaktivierung auszuf&uuml;hren\" width=\"499,6267\" height=\"192,8171\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Meldung beim Versuch, ein Makro trotz Deaktivierung auszuf&uuml;hren<\/span><\/b><\/p>\n<p>Um Makros zu aktivieren, &ouml;ffnest Du mit dem Ribbonbefehl <b>Datei|Optionen <\/b>den Optionen-Dialog von Outlook.<\/p>\n<p>Hier wechselst Du zum Bereich <b>Trust Center <\/b>und klickst dort auf <b>Einstellungen f&uuml;r das Trust Center&#8230;<\/b>, was den Dialog <b>Trust Center <\/b>&ouml;ffnet.<\/p>\n<p>Dort aktivierst Du im Bereich <b>Makroeinstellungen <\/b>eine der Optionen <b>Benachrichtigungen f&uuml;r alle Makros <\/b>oder <b>Alle Makros aktivieren<\/b>.<\/p>\n<p>Wenn <b>Benachrichtigungen f&uuml;r alle Makros <\/b>aktiviert ist, erscheint beim Start von Outlook die Meldung aus Bild 2 &#8211; vorausgesetzt, es liegt keine der &uuml;brigen Ursachen f&uuml;r eine Fehlfunktion von <b>Application_Startup <\/b>vor.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_312_002.png\" alt=\"Meldung, wenn Benachrichtigungen f&uuml;r Makros aktiviert sind\" width=\"599,6265\" height=\"231,3604\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Meldung, wenn Benachrichtigungen f&uuml;r Makros aktiviert sind<\/span><\/b><\/p>\n<p>Ist <b>Alle Makros aktivieren <\/b>selektiert, sollte <b>Application_Startup <\/b>beim Start ausgef&uuml;hrt werden. Wenn nicht, pr&uuml;fe, ob Du es wie oben beschrieben von Hand aufrufen kannst, was nun funktionieren sollte. Dann ist einer der folgenden beiden Gr&uuml;nde f&uuml;r das Problem verantwortlich.<\/p>\n<h2>Outlook ist bereits ge&ouml;ffnet<\/h2>\n<p>Es kann auch sein, dass Outlook bereits durch eine andere Anwendung ge&ouml;ffnet wurde und diese Instanz immer noch in einer Variable referenziert ist.<\/p>\n<p>Du kannst diese Variante nachvollziehen, indem Du in einer anderen Anwendung, beispielsweise in einem Standardmodul den folgenden VBA-Code platzierst:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>objOutlook<span style=\"color:blue;\"> As Object<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>OutlookStarten()\r\n     <span style=\"color:blue;\">Set<\/span> objOutlook = CreateObject(\"Outlook.Application\")\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Stelle dann sicher, dass Outlook nicht ge&ouml;ffnet ist und f&uuml;hre den obigen Code aus. Outlook wird nun unsichtbar ge&ouml;ffnet, was Du auch im Task-Manager nachpr&uuml;fen kannst. Dieser zeigt nun zwar keine Outlook-Instanz unter <b>Apps <\/b>an, aber eine unter <b>Hintergrundprozesse <\/b>(siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_312_003.png\" alt=\"Hinweis auf eine im Hintergrund ge&ouml;ffnete Outlook-Instanz\" width=\"649,627\" height=\"515,995\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Hinweis auf eine im Hintergrund ge&ouml;ffnete Outlook-Instanz<\/span><\/b><\/p>\n<p>In diesem Fall wird beim &Ouml;ffnen von Outlook &uuml;ber die Benutzeroberfl&auml;che keine neue Outlook-Instanz ge&ouml;ffnet, sondern nur ein neuer Outlook-Explorer &#8211; und das l&ouml;st das Ereignis <b>Application_Startup <\/b>nicht aus.<\/p>\n<h2>Ein Registry-Eintrag verhindert Application_Startup<\/h2>\n<p>Damit kommen wir zu der am schwersten zu findenden Variante. Wir konnten nicht reproduzieren, wie das Problem entsteht, aber wir wissen, wie es sich &auml;u&szlig;ert.<\/p>\n<p>In der Registry gibt es im Zweig <b>HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Office\\16.0\\Outlook <\/b>eine Einstellung namens <b>LoadMacroProviderOnBoot<\/b>, die f&uuml;r den korrekten Aufruf von <b>Application_Startup <\/b>beim Start von Outlook den Wert <b>1 <\/b>aufweisen muss (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_04\/pic_312_004.png\" alt=\"Hat dieser Eintrag den Wert 0, wird Application_Startup nicht ausgef&uuml;hrt.\" width=\"649,627\" height=\"315,2881\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Hat dieser Eintrag den Wert 0, wird Application_Startup nicht ausgef&uuml;hrt.<\/span><\/b><\/p>\n<p>Wenn dieser den Wert <b>0 <\/b>hat, wird <b>Application_Startup <\/b>nicht ausgef&uuml;hrt. Was dazu f&uuml;hrt, dass <b>LoadMacroProviderOnBoot <\/b>auf <b>0 <\/b>eingestellt ist, konnten wir nicht herausfinden. Wichtig ist, dass wir wissen, wie wir diesen Wert wieder auf <b>1 <\/b>einstellen, damit <b>Application_Startup <\/b>beim n&auml;chsten Aufruf von Outlook wieder wie gewohnt arbeitet.<\/p>\n<p>Die offensichtliche M&ouml;glichkeit ist, diesen Wert direkt in der Registry anzupassen. Das wollen wir den Anwendern unserer Outlook-Erweiterungen jedoch nicht zumuten.<\/p>\n<p><b>LoadMacroProviderOnBoot <\/b>wird automatisch auf <b>1 <\/b>eingestellt, wenn w&auml;hrend einer Outlook-Session irgendeine VBA-Prozedur ausgef&uuml;hrt wird. Dann stellt Outlook diesen Wert beim Schlie&szlig;en wieder auf <b>1 <\/b>ein.<\/p>\n<p>Aber wie stellen wir sicher, dass innerhalb der Session Code ausgef&uuml;hrt wird? Das k&ouml;nnen wir entweder, wie oben beschrieben, von Hand erledigen.<\/p>\n<p>Allerdings wirkt sich der Wert <b>0 <\/b>f&uuml;r die Einstellung <b>LoadMacroProviderOnBoot <\/b>nur auf die Ausf&uuml;hrung von <b>Application_Startup <\/b>aus.<\/p>\n<p>Alle anderen Ereignisse des <b>Application<\/b>-Objekts, die wir auch im Artikel <b>Outlook: Die Application-Klasse <\/b>(<b>www.vbentwickler.de\/305<\/b>) vorstellen, werden jedoch ausgel&ouml;st.<\/p>\n<p>Wenn Du gerade keine andere Ereignisprozedur ben&ouml;tigst, kannst Du einfach eine leere Prozedur f&uuml;r das Ereignis <b>Quit <\/b>im Modul <b>ThisOutlookApplication <\/b>einrichten:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Application_Quit()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wird diese Prozedur beim Beenden von Outlook ausgef&uuml;hrt, kannst Du nach dem Schlie&szlig;en von Outlook die &Auml;nderung des Wertes f&uuml;r <b>LoadMacroProviderOnBoot <\/b>feststellen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Ereignis &#8220;Startup&#8221; des &#8220;Application&#8221;-Objekts von Outlook ist f&uuml;r viele benutzerdefinierte Erweiterungen von Outlook essenziell, da es die M&ouml;glichkeit bietet, direkt beim Starten von Outlook VBA-Code auszuf&uuml;hren. Damit lassen sich f&uuml;r verschiedene Anwendungen wichtige Automatismen ansto&szlig;en &#8211; zum Beispiel das Deklarieren und Initialisieren von Objektvariablen, f&uuml;r die Ereignisse implementiert werden sollen. Leider passiert es gelegentlich, dass die Ereignisprozedur Application_Startup beim Starten von Outlook nicht aufgerufen wird. Woran das liegt und wir dies &auml;ndern, zeigt der vorliegende Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662022,66042022,44000026,44000025],"tags":[],"yst_prominent_words":[],"class_list":["post-55000312","post","type-post","status-publish","format-standard","hentry","category-662022","category-66042022","category-Outlook_programmieren","category-VBAProgrammierung"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000312"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000312\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000312"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}