FixIt: Outlook VBA-Code in Formular wird nicht mehr ausgeführt

Hallo allerseits,

heute habe ich ein sehr interessantes FixIt für euch.

Problem:

In Outlook (bei mir Version 2016, FixIt gilt aber für die Versionen 2007, 2010, 2013 und 2016) wurde ein benutzerdefiniertes Formular erstellt, in dem VBA-Code/-Script(s) ausgeführt werden soll(en).

Beim Starten des Scripts, zum Beispiel durch Klick auf eine Schaltfläche, passiert aber nichts. In meinem Fall hat es schon mal ohne Probleme funktioniert und „auf einmal“ ging nichts mehr. ?

Lösung: 

Die Lösung ist relativ einfach …. zunächst aber erst mal der Grund für das oben erläuterte Problem:

Im September 2017 wurde ein öffentliches Update für Outlook ausgegeben, in dem diese „Sicherheits-Funktion“ enthalten ist; d. h. die Ausführung von VBA-Scripts wird aus Sicherheitsgründen blockiert, was in unserem Fall äußerst ungünstig ist, denn genau das wollen wir ja!

Allerdings kann man diese „Blockade“ mit Hilfe von Registry-Einträgen wieder aufheben.

Wichtiger Hinweis vorweg (muss sein! ?):
Änderungen an der Windows-Registrierungsdatenbank können Schäden am System hervorrufen. Nachfolgendes FixIt führst du auf eigene Verantwortung durch!

Starte den Registry-Editor:

Erstelle dann diesen Schlüssel:
bei 32-Bit-Office unter 64-Bit-Windows:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Outlook\Security

 

bei 32-Bit-Office unter 32-Bit-Windows oder 64-Bit-Office unter 64-Bit-Windows:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Outlook\Security

Im gerade erstellten Schlüssel erstellst du nun einen DWORD-Wert (32 Bit) mit dem Namen DisableCustomFormItemScript und dem Wert „0“

Damit wird die Sperre der Ausführung von Scripts in Formularen (global) aufgehoben.

Nun müssen die Formular-Klassen noch explizit aktiviert werden.Dazu musst du erst mal ermitteln, um welche Formular-Klasse es bei dir geht.
Öffne dein Formular in der Entwicklungsumgebung:

Starte nun die Veröffentlichung des Formulars:

Jetzt wird dir im Speichern-Dialog angezeigt um welche Nachrichten-Klasse
es sich bei deinem Formular handelt:


Bei mir ist es die Klasse „IPM.Task.Projekt“

Um die Scriptausführung für dieses Formular zu aktivieren musst du nun im Regitry-Editor folgenden Schlüssel anlegen:

bei 32-Bit-Office unter 64-Bit-Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Outlook\Forms\TrustedFormScriptList

bei 32-Bit-Office unter 32-Bit-Windows oder 64-Bit-Office unter 64-Bit-Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Outlook\Forms\TrustedFormScriptList

In diesem Schlüssel erstellst du nun eine Zeichenfolge mit dem Namen deiner Formularklasse

:

Diesen Schritt musst du für jedes deiner Formulare durchführen, solltest du mehr als nur das eine haben.

Jetzt Outlook neu starten und die Ausführung des Scripts/Codes sollte wieder klappen. ?

Hinweis 1:

Im o. g. FixIt wurde in der Registry der Office-Pfad 16.0 verwendet, da es sich um die Office-Version 2016 handelt. Jede Office Version hat seinen eigenen Registry-Pfad. Verwende also 15.0 für Outlook 2013, 14.0 für Outlook 2010 und 12.0 für Outlook 2007.

Hinweis 2:

In einigen Fällen funktioniert Formulare in sekundären Postfächern und öffentlichen Ordnern nach Ändern der Registrierungsschlüsseleinstellungen immer noch nicht. Zum Beheben dieses Problems aktiviere Skripts im Trust Center:

Klicke auf Datei > Optionen. Wähle dann Trust Center > Einstellungen für das Trust CenterE-Mail-Sicherheit aus.

Klicke im Abschnitt Skript in Ordnern auf das Kontrollkästchen für Skript in freigegebenen Ordnern zulassen und Skript in Öffentlichen Ordnern zulassen, und klicke anschließend auf OK und nochmals OK, um die Fenster zu schließen.

 

Frage(n)? Dann schreib einen kurzen Kommentar oder erstelle ein Thema dazu im Tech-Tipps-Forum !

 

Quelle: https://support.office.com/de-de/article/Benutzerdefiniertes-Formularskript-ist-nun-standardm%C3%A4%C3%9Fig-deaktiviert-bd8ea308-733f-4728-bfcc-d7cce0120e94

5 Antworten auf „FixIt: Outlook VBA-Code in Formular wird nicht mehr ausgeführt“

  1. Hallo, auch nach sorgfältiger Überprüfung bin ich der Überzeugung alles so eingestellt zu haben.
    Aber es funktioniert nicht. Ich möchte nur in meinem eigenen Kalender Formulare ausführen, die jahrelang liefen.

    1. Hallo,
      es ist natürlich sehr schwer bei diesem Problem eine Ferndiagnose zu stellen.
      Ich kann aber anbieten mir das Ganze mal in einer TeamViewer-Sitzung anzuschauen. Wenn du das möchtest, kannst du dich gerne unter info@tech-tipps.de bei mir melden.
      Gruß, Andreas.

  2. Guten Tag, auch wir haben das Problem und Danke für diesen Beitrag- Leider funktioniert das nicht. Gibt es die Möglichkeit sich das gemeinsam per Teamviewer anzusehen? Gerne auch gegen eine entsprechende Gebühr. Freundliche Grüße Volker

  3. Hier ist die Lösung des Problems: Wenn ihr euer Formular umbenannt habt, erhält die Formularklasse eine Erweiterung, z. B.
    IPM.Appointment.Termindetails, wenn das neue Formular „Termindetails“ heisst, oder IPM.Contact.Kontaktadressen, wenn das neue Formular „Kontaktadressen“ heisst.
    Hoffe, das hilft.

    1. Vielen Dank für den Hinweis, Peter!

      Wobei ich allerdings auf genau diesen Punkt in der Lösungs-Beschreibung hingewiesen habe:
      Erst ermitteln, wie die Formularklasse heißt und diesen Namen dann in die Registrierungs-Datenbank eintragen.

      Es macht natürlich keinen Sinn den Eintrag „IPM.Task.Projekt“ zu hinterlegen, wenn das Formular „Kontaktadressen“ und die Klasse dem zufolge „IPM.Appoinment.Kontaktadressen“ heißt.

      Der Klassenname beinhaltet zum einen die Art des Formulars (also z. B. „Task“ für Aufgabe, „Contact“ für Kontakte, etc.) und zum anderen den Namen, den man dem Formular gegeben hat (in meinem Fall z. B. „Projekt“).
      Das muss natürlich jeder seinen Gegebenheiten gemäß anpassen!

Schreibe einen Kommentar zu K.D.Brinkmann Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert