Zufällige Fehler der Outlook 2013-VBA-Regel

0

Mein Ziel ist es nicht, Outlook dazu zu bringen, alle E-Mails von einer angegebenen Adresse zu löschen, wobei maximal 3 Nachrichten gespeichert bleiben (dies hilft wirklich bei einigen täglichen Abonnements wie Gutscheinen usw.).

Ich habe viele Regeln, die E-Mails in verschiedene Ordner sortieren und mit einer speziellen Kategorie kennzeichnen (nennen wir es "Betrag: 3"). Ich habe auch die letzte Regel in der Liste, die mein VBA-Skript ausführt: Es zählt E-Mails desselben Absenders in einem Ordner (mit dieser Kategorie "Betrag: 3") und löscht alte Nachrichten, wobei nicht mehr als der angeforderte Betrag übrig bleibt.
Das Ganze funktioniert einwandfrei, wenn Outlook ausgeführt wird und neue E-Mails empfängt. Aber wenn ich Outlook zum ersten Mal starte und neue E-Mails auf dem Server sind, wird zufällig angezeigt, dass die Skriptregel nicht ausgeführt werden konnte, und es wird deaktiviert.
Mein Skript protokolliert, sodass ich mir ziemlich sicher bin, dass es kein falsches Skriptproblem ist . Außerdem scheint es, als würde ich die Debug-Protokollierung in Outlook einschalten - das Problem verschwindet. Und im Systemjournal gibt es auch nichts Verdächtiges ...

Die Frage ist also, wie kann ich herausfinden, was daran falsch ist? Wenn negativ - gibt es eine Möglichkeit, die gewünschten Ergebnisse in Outlook 2013 zu erzielen?
Und ja, ich weiß, dass MS vorschlägt , die VBA-Regel nicht zusammen mit anderen Arten von Regeln zu verwenden, unabhängig von der Reihenfolge usw., aber ich kann immer noch nicht glauben, dass sie sie so unvorhersehbar gemacht haben ...

ps: die gleiche lösung hat in früheren zeiten bei Outlook 2007 mehr oder weniger stabil funktioniert ...

FlasH von Ru
quelle
Ich bin mir nicht sicher, was das Problem ist, es klingt eher nach einer Art Timing Edge-Fall. Ich wäre jedoch versucht, dies in zwei Schritten zu tun. Markieren Sie zunächst alles, was gelöscht werden könnte, mit einer Kategorie. Löschen Sie dann alle Mails mit dieser Kategorie - dies kann bei Bedarf in einem separaten Prozess geschehen. Sie können die E-Mails dann auch manuell löschen.
Julian Knight
Ich bin der Meinung, dass Outlook mit mehreren Threads beginnt, die die Initialisierung durchführen usw. Und wenn einer von ihnen neue E-Mails empfängt, ist ein anderer, der die VBA-Initialisierung ausführt, noch nicht fertig ... Wie kann ich den zweiten Teil durchführen? alle Mails mit dieser Kategorie automatisch aber ohne Rules Engine / VBA löschen (da es meiner Frage nach nicht funktioniert :))?
FlasH vom
Am einfachsten ist es, einen benutzerdefinierten Suchordner für die von Ihnen verwendete Kategorie zu erstellen. Es werden alle E-Mails in dieser Kategorie gefunden. Sie können sie dann mit Strg-A, Entf löschen.
Julian Knight
Das erfordert noch manuelle Handlungen. Nicht viel, aber trotzdem :)
FlasH vom
Ja, das ist wahr. Sie können jedoch beim Starten und Herunterfahren eine VBA ausführen, die alles in diesem virtuellen Ordner löscht. Dies funktioniert, da Sie nicht von E-Mail-Transportereignissen abhängig sind.
Julian Knight

Antworten:

0

Wenn Sie nicht versuchen, alles auf einmal zu tun, markieren Sie alles, was Sie löschen möchten, mit einer Kategorie. Sie können dann einen virtuellen Suchordner für diese Kategorie erstellen. Dies hat den Vorteil, dass über alle aktuellen Ordner hinweg gearbeitet werden kann.

Sie könnten dann eine einfache VBA schreiben, die beim Starten und Herunterfahren von Outlook ausgeführt wird und die den Inhalt dieses virtuellen Suchordners löscht.

Dann sind Sie nicht darauf angewiesen, dass die Posttransportereignisse in der richtigen Reihenfolge ausgelöst werden.

Julian Knight
quelle
Nun, technisch sollte dieser nicht abstürzen (zumindest wird keine VBA-Regel verwendet). Das Problem wird dadurch jedoch nicht gelöst: Die Mailbox sollte nicht verkleinert, sondern sinnlose Abonnement-Mails nahtlos aussortiert werden.
FlasH vom 06.04.15
Ich habe den folgenden WA erstellt: Meine VBA-Regel wird jetzt durch ein Outlook-Startereignis aktiviert (und gleichzeitig für alle ungelesenen E-Mail-Elemente ausgeführt) und durch ein Outlook-Beendigungsereignis deaktiviert. Abwarten und sehen , ob meine Vermutung über etwa Unfähigkeit von der Regel VBA zu nennen korrekt ist)
FlasH von Ru
Die gesamte Behandlung von Start / Exit-Ereignissen wurde zurückgesetzt (weil sie auch nicht funktionierte) - es wurde auf das ursprüngliche Schema mit regelgesteuertem VBA zurückgegriffen, aber der gesamte VBA-Code aus einem separaten Modul in das ThisOutlookSession- Objekt verschoben - und es scheint zu funktionieren jetzt!
Ich
0

Mann! Es sieht aus wie ich es endlich behoben haben (facepalm) So wie es funktioniert alles , die Zeiten ist:

  • Das gleiche regelbasierte VBA-Sub erledigt wichtige Aufgaben
  • Application_Startup / Application_Quit-Ereignishandler zum Aktivieren / Deaktivieren der entsprechenden Regel, um zufällige Fehler beim Start von Outlook zu vermeiden (siehe meine Kommentare zu Fragen / Antworten hier)
  • Autolunch-Verknüpfung, die aus dem Microsoft Office 2013- Ordner unter Start -> Alle Programme kopiert wurde (ursprünglich war es eine Verknüpfung zu OUTLOOK.EXE, und es scheint, dass beim Starten von Outlook auf diese Weise keine Ereignishandler ausgelöst werden. O_o)
FlasH von Ru
quelle
# $% ^ $! Es funktioniert auch nach einiger Zeit nicht mehr. Keine Ahnung, was ich noch tun soll.
Ich