Ich habe eine Message-Handler-Funktion in Outlook Visual Basic geschrieben (wir verwenden Outlook 2003 und Exchange Server), um eingehende E-Mails zu sortieren.
Es funktioniert für mich, außer manchmal schlägt die Regel fehl und Outlook deaktiviert es.
Dann schalte ich die Regel wieder ein und führe sie manuell in meinem Posteingang aus, um aufzuholen. Die Regel fällt spontan aus und wird mehrmals am Tag deaktiviert.
Ich würde das gerne ein für allemal beheben.
Dieser Code zeigte mir die verschiedenen TypeNames, die in meinem Posteingang waren:
%Vor%HTH
Ich verwende das folgende VBA-Codefragment in anderen Office-Anwendungen, auf die direkt auf die Outlook-Bibliothek verwiesen wird.
%Vor%usw.
Mein Speicher ist etwas bewölkt, aber ich glaube, dass ein MailItem kein MailItem ist, wenn es sich um eine Lesebestätigung handelt. (Leider wurde der VBA-Code, der dies demonstrierte, an einem anderen Job geschrieben und ist jetzt nicht verfügbar.)
Ich hatte auch Code geschrieben, um eingehende Nachrichten zu verarbeiten, wahrscheinlich aus dem gleichen Grund wie Sie es getan haben (zu viele Regeln für Exchange oder Regeln, die zu komplex für den Regel-Assistenten sind) und scheinen sich daran zu erinnern, dass Sie das gleiche Problem haben einige Dinge schienen von einem anderen Typ zu sein, obwohl ich sie mit etwas wie dem, was du geschrieben hast, gefangen habe.
Ich werde sehen, ob ich ein bestimmtes Beispiel erstellen kann, wenn es helfen wird.
hat in Visual Basic von Outlook eine Message-Handler-Funktion geschrieben (wir verwenden Outlook 2003 und Exchange Server), um eingehende E-Mails zu sortieren. Es funktioniert für mich, außer manchmal schlägt die Regel fehl und Outlook deaktiviert es. Dann wende ich die Regel wieder an und führe sie manuell in meinem Posteingang aus, um aufzuholen. Die Regel fällt spontan aus und wird mehrmals am Tag deaktiviert. Ich würde das gerne ein für allemal beheben.
Hier ist der Code, der von der Funktionalität befreit ist, aber Ihnen eine Vorstellung davon gibt, wie er aussieht:
%Vor%Ein Fehler, den ich bekomme, ist "Type Mismatch", der MyMessageHandler aufruft, wo VB beschwert, dass Item kein MailItem ist. Okay, aber TypeName (Item) gibt "MailItem" zurück. Wie kommt es, dass Item kein MailItem ist?
Eine andere, die ich bekomme, ist, wo eine E-Mail mit einem leeren Betreff kommt. Die Zeile
%Vor%gibt mir einen Fehler. Ich weiß, Item.Subject sollte leer sein, aber warum ist das ein Fehler?
Danke.
Es gibt viele Arten von Elementen, die im Standard-Posteingang angezeigt werden können.
Weisen Sie in der aufgerufenen Prozedur das eingehende Element einer Variablen vom Typ Object
zu. Verwenden Sie dann TypeOf
oder TypeName
, um festzustellen, ob es sich um MailItem
handelt. Nur dann sollte Ihr Code Aktionen ausführen, die für E-Mails gelten.
d. h.
%Vor% Warum nicht einen einfachen Fehlerhandler für den Code verwenden? Ernst. Sie könnten einen Fehler für jedes Lesen einer Eigenschaft oder eines Objekts schreiben, das fehlschlägt. Dann lass es weitergehen, egal was passiert. Keine Notwendigkeit für eine komplexe Fehlerbehandlung. Stellen Sie sich einen Test vor, der ein leeres Thema zeigt. Da Sie nicht wissen, welchen Wert es zurückgibt, falls es einen gibt und es bei einem leeren oder leeren Betreff fehlerhaft zu sein scheint, müssen Sie es als einen einfachen Test mit einem möglichen Fehler darstellen. Führen Sie den Test als eine if-Anweisung aus (eine, in der Sie trotzdem einen Fehler erhalten), und lassen Sie das Programm bei einem Fehler fortsetzen.
Tags und Links vba outlook-vba mailitem typeof outlook-2003