Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Outlook - Automatisierte Mailverarbeitung mit VBA-Makros

Mitglied: Biber

Kurze Skizze zu ein paar Möglichkeiten, mit Outlook-Bordmitteln ein bisschen den Posteingang automatisiert per Makros zu verarbeiten.

So, mal zur Abwechslung was anderes als immer nur Batch..

Ich habe mal, weil es doch mehrmals als Idee auftauchte im Forum, eine kleine beispielhafte "automatisierte" Outlook-Mailverarbeitung mit VBA zusammengeschrotet.

Ist vor allem eine Antwort auf cocoonclubbers Beitrag Outlook 2003 Regeln - Wie weitere Regeln hinzufügen.

Was das Beispiel kann:

1. Geht "auf Knopfdruck" alle Mails im Posteingang durch. Beachtet werden in dem Beispiel nur
- Mails von "notify@administrator.de" ("Benachrichtigungen")
- Mails von "message@administrator.de" ("Mitteilungen")
2. Sowohl diese "Mitteilungen" wie auch "Benachrichtigungen" sind hinterher NICHT mehr im Posteingang.
3. Keine Panik, eine Eins-zu-Eins-Kopie wird im Mail-Ordner "AdminCopy" angelegt.
4. "Mitteilungen"/Messages: Werden zusammengedampft zu zwei Zeilen:
Subject/Betreff : "11.11.2005 17:47:44 von "userXY"
Body/Mailtext: "userXY"
Werden verschoben in den Ordner "AdminProper"
5. "Benachrichtungen"/Notifies: Werden zusammengedampft zu zwei Zeilen:
Subject/Betreff : "Windows XP Home in Professional Light umwandeln" (Beispiel für Titel)
Body/Mailtext: "https://www.administrator.de/forum/desktop-updaten-737.html" (Beispiel-Link)
Werden verschoben in den Ordner "AdminProper"
6. Alle Mitteilungen/Messages werden zusätzlich in einer neuen Note/Notiz im Ordner "AdminNotizen" angefügt.
7. Alle Nachrichten/Notifies werden in eine Textdatei "AdminMsg.txt" ins Tempverzeichnis geschrieben.
8. Die neuen Ordner "AdminCopy", "AdminProper" und "AdminNotizen" werden angelegt, falls nicht vorhanden.

------- Die kreativen Namen siehe in den CONST-Deklarationen.
------- Wenn im ersten Schritt etwas zu ändern ist, dann dort.

Was es nicht kann:

Es kann NICHT unbesehen als "produktive Anwendung" eingesetzt werden.
Ist nur eine schnell zusammengebratene Skizze, die ein paar Möglichkeiten aufzeigen soll.
Und es startet nicht von allein - der Makro muss "von Hand" gestartet werden.

Use on your own risk. And don't call us - we will call you .. :-) face-smile

How to use

Den Code unten markieren und im Outlook als neuen Sourcecode kopieren.
[Outlook] Extras->Makros->VisualBasic-Editor
[Im VBA-Projekt]->Outlook->DieseOutlooksitzung->Code anzeigen... einfügen. Speichern.

~~~~~~~~
Entweder im VBA starten (mit/ohne Debugger) oder
im Outlook unter Extras->Makro das Makro "FormatAdminMsg" starten.

~~~~~~~~
Ich habe diesen Makro weder in das Menü gehängt (kommt im VBA-Tut Teil II)
noch dieses Makro an Ereignisse gekoppelt (z.B. an das Ereignis "Neuer Maileingang")
~~~~~~~~

!!! Hint: Wenn ihr schon Eure Administrator-Mails per Outlook-Regel verschiebt!!!
Dann: entweder die Regel mal de-aktivieren und dieses Makro probieren
oder unten im Source die Zeile
"Set FolderAdminInbox = myNameSpace.GetDefaultFolder(olFolderInbox)"
auf Euren Ordner mit den administrator.de-Mails ändern.
Oder, dritte Variante, wieder ein paar Administrator-Mails zurückkopieren in "Posteingang"

Hoffe, es macht Appetit auf ein bissi VBA.

Frank / der Biber aus Bremen

Content-Key: 19552

Url: https://administrator.de/contentid/19552

Ausgedruckt am: 19.10.2021 um 04:10 Uhr

Mitglied: 5960
5960 14.11.2005 um 09:08:25 Uhr
Goto Top
UiUiUi...

ich glaube, da werde ich mir erstmal ein wenig VBA for dummies reinziehen... Im Moment steh ich echt aufm Schlauf :-) face-smile
Aber DANKE für die Mühen schonmal.

Hoffentlich werde ich den Code dann auch ein wenig verstehen ;-) face-wink
Mitglied: Biber
Biber 14.11.2005 um 09:54:13 Uhr
Goto Top
Moin cocoonclubber,
es gibt sicherlich Leute, die in so ein Thema "auf die sanfte Art" gut hineinkommen - zum Beispiel durch ein Büchlein mit ein paar Cartoons zur Auflockerung.
Ich kann immer mehr mit konkreten Beispielen anfangen, deshalb habe ich diesen Weg gewählt. (Außerdem - meine Cartoons sind noch schlechter als mein Spaghetti-Code und im Erklären bin ich nicht sonderlich gut..)

Trotzdem - versuchs einfach mal auf meine Art - kopier Dir den Schnipsel wie oben beschrieben in Dein Outlook-VBA-Fensterchen, lies Dir einmal durch, was der Makro behauptet zu können und gehe dann mit der Taste F8 (schrittweises Ausführen) durch den Code. Mach Dir noch ein "Sofort-Fenster" (unter Ansicht) auf, damit Du die "Debug.Print"-Ausgaben siehst.

Bücher lesen kannst Du in der dunklen Jahreszeit noch genug vorm Kamin.

Grüße
Biber
Mitglied: gerdmbs
gerdmbs 06.12.2005 um 10:38:31 Uhr
Goto Top
Dankeschön für dieses Outlook-VBA-Beispiel. Es hat mich nicht nur in einer Problemlösung weitergebracht, sondern auch meinem Verständnis für die objektorientierte VBA-Programmierung einen kleinen Kick gegeben.
cu Gerd
Mitglied: connysoft
connysoft 19.02.2007 um 13:35:15 Uhr
Goto Top
Hallo Frank,
das ist ja alles ganz klasse. Aber gibt es einen Befehl mit dem man direkt auf einen Folder verweisen kann der 4 Etagen unter Default liegt?
Oder muß man sich tatsächlich mit "For each ... " durch alle Ebenen wurschteln?

Vieleicht hast Du einen Tip?

Vielen Dank

Connysoft
Mitglied: Biber
Biber 19.02.2007 um 19:49:15 Uhr
Goto Top
Moin connysoft,

willkommen im Forum.

Ich habe zwar nicht gezielt nach einem Befehl gesucht, mit dem ich einen bestimmten Ordner irgendwo in der angelegten Verzeichnisstruktur finden kann.
Ich gehe aber davon, dass Du den nur über "gezielt gewählte" Suchwege (=Du kennst den Parent) finden kannst. Oder durch rekursives Durchwackeln aller Unterordner.

Da die Foldernamen nicht einmalig/eindeutig sein müssen (Du kannst dir in unterschiedlichen Ebenen durchaus mehrfach einen Ordner "Posteingang" anlegen), wird auch eine hypothetische GetFolderByItsDisplayName()-Methode nicht wirklich funktionieren.
Auch da wirst Du IMHO nur entweder den ersten gefundenen Ordner oder einen ganzen ResultSet erhalten, aus denen Du manuell/per Algorithmus einen wählen musst.



Vielleicht weiß eine/r im Forum mehr - ich habe keinen Tipp.

Gruss
Biber
Mitglied: kurd51
kurd51 19.06.2007 um 01:29:42 Uhr
Goto Top
mein Problem nicht nur mit Ihrem Makro besteht hauptsächlich im auftauchen folgender Sicherheitswarnung.
Ein Programm versucht, auf ihre in Outlook gespeicherten E-Mail-Adressen zuzugreifen. Möchten Sie dies zulassen ? usw.
Die dann nötigen Maus Clicks sind von einer Körperbehinderten leider nicht ausführbar. Sie kann ausgestattet mit nur einem Taster Mails versenden, dafür habe ich eine Lösung gefunden, eine Lösung wie ich den E-Mail Eingang in eine Textdatei bekomme ohne diese Outlook Warnung fehlt mir leider noch.
Gruß Kurd51
Mitglied: jalias
jalias 17.09.2007 um 11:14:43 Uhr
Goto Top
Das Makro funktioniert bei mir nicht ! Verwendung Outlook 2003.
Kann das am fehlenden Code:
<scode>'------snipp Makro zur Administrator-Mail-Nachbehandlung
liegen? Wenn ich ihn hinzufüge, bekomme ich allerdings ein Fehlermeldung.

MfG jalias
Mitglied: Biber
Biber 17.09.2007 um 11:34:42 Uhr
Goto Top
Moin jalias,

danke für den Hinweis -- die Codeblocks standen in der Tat in <scode>..</scode>-Tags...

Habe es oben berichtigt.

Möglicherweise funktioniert das Beispiel-.Makro im Detail nicht ganz, weil sich vielleicht die geprüften "Subjects" und administrator.de-Absenderadressen geändert haben seit damals.

Ansonsten sollte es aber jetzt (vorzugsweise durch-steppen im Debug-Modus) laufen.

Grüße
Biber
Mitglied: Chaoslord1974
Chaoslord1974 14.07.2008 um 12:25:10 Uhr
Goto Top
Hallo Biber,

läßt sich das Makro auch ein an Event "OnMailReceive" automatisieren? Oder kann man mit einer Regel ein Makro starten?
Hintergrund :
In meiner Firma soll ich für meine Abteilung einen Mail-Dispatcher schreiben, der eingehende (automatisch erstellte eMails) weiterroutet. Dafür müßte ich ca. 20 Regeln definieren und pflegen. Mir schwebt eher ein Makro vor, das ich mit zwei Arrays verwalte vor. Im ersten Array steht der Trigger-Betreff ("Maintenance Update Modell 747-B6....") und im zweiten steht die Emailadresse des verantwortlichen Indextreu ("john.doe@airline.com").

Danke für deine Hilfe !!!

Chaoslord.
Mitglied: Biber
Biber 14.07.2008 um 13:42:38 Uhr
Goto Top
Moin Chaoslord,

willkommen im Forum.
läßt sich das Makro auch ein an Event "OnMailReceive" automatisieren?
Oder kann man mit einer Regel ein Makro starten?
Ich liebe Oder-Fragen.
Antwort: Auf jeden Fall! Natürlich.

Etwas differenzierter:
a) über den Event wäre natürlich meine automatisierte Ziel-Variante No. 1.
So ist es gedacht und sinnvoll.
b) "An ein Makro hängen" ist doppelt gemoppelt, stinkelangsam, so ästhetisch wie Thomas "For ever Young" Gottschalks Oberbekleidung und außerdem (AFAIK) nur mit einer C-(LIB)-Schnittstelle möglich, nicht mit VBA als Skriptgrundlage.
Und das isses nicht wert.

Variante a) würde ich allerdings erst nach ausgiebigem Testen der Funktionalität scharfschalten. Bis dahin die Lösung über "Anklicken" einsetzen.

Grüße
Biber
Mitglied: Chaoslord1974
Chaoslord1974 14.07.2008 um 14:39:38 Uhr
Goto Top
Hallo Biber,

danke für die differenzierte Variante. Um auf die Automatisierung zurückzukommen, wie heißt das Event und an welchem Objekt hängt das Event? Gibt es eine Methode in der Art "InBox.OnMailReceiveRegister(MyMakro.Execute)" ?
Gerne beiß' ich mich da selber durch, hast du ein Nachschlagewerk oder ähnliche Buchempfehlung?

Greetings vom Mainframe,

Chaoslord1974.
Mitglied: Biber
Biber 14.07.2008 um 20:48:43 Uhr
Goto Top
Moin Chaoslord,

also - ich hab mal in meiner Jugend so etwas ähnliches gemacht - den Beispiel-Ansatz oben allerdings habe ich aber wirklich nur stehend freihändig eben als Tutorial zusammengeharkt. Ohne Anspruch auf sofortige Produktiv-Verwendbarkeit.
Siehe das Vorwort oben.
Das heißt, dieser Schnipsel, falls ich ihn noch habe, schlummert irgendwo in einem Outlook-Debugger und ich setze ihn nicht automatisiert ein.

WENN ich so einen Prozess produktiv einsetzen wollte, würde ich aus Effizienzgründen (oder Misstrauen gegen die Ressourcenverwaltung von Windows-egal-welchen-Nachnamen-es-hat) NIE NIE NIE den Weg über ein offenes/aktives Outlook gehen, bei dem dann irgendetwas rumzappelt, wenn Mail eintrudelt (kennst Du das: Du bist in Word am Tippen, und mitten im Schreiben tippst Du in so eine - "Sie habe neue interessante Mitteilungen"-Box von Outlook?)

Ich würde über einer EXTERNE Mini-App (VBS oder was simples) gehen, Outook öffnen oder mich gast-weise in ein laufendes mitreinsetzen (CreateObject/getobject(, OutlookApplication)) und dann im "Posteingang"/"Inbox"-Folder alle Mails durchwackeln, die "unRead"-Status haben. und genau die behandeln.
Alle, die sich eventuell schon der (menschliche) outlook-benutzer angeschaut,/bearbeitet/beantwortet hat ignoriere ich.
Die 30 oder 300 unRead-Mails kann ich in einer halben Minute abfackeln...danach legt sich meine Appz wieder ein Stündchen schlafen, bis ein weckender Taskplaner um die Ecke biegt.

So wäre meine Grob-Skizze, wenn denn noch ein menschlicher User (auch) mit diesem outlook hantiert und nicht ausschließlich automatisiert verarbeitbare Mails kommen.

Wenn es ein "anonymes" Postfach ist, dass nur als Sammelbecken für Hotline, Steckdosen-Antragsformulare oder eingehene Viagra-Mails genutzt wird, auch dann macht es wenig Sinn, das Outlook den ganzen Tag irgendwo brennen zu lassen, damit etwas "bei Posteingang/bei ankommenden Mails" passiert.

Grüße
Biber
Mitglied: TecAttack
TecAttack 23.02.2010 um 08:30:22 Uhr
Goto Top
Hi,

Danke für deinen Code, den ich als Leihe zwar nicht ganz verstehe aber dennoch weckt es mein Interesse. Du schriebst:

Was das Beispiel kann:
...
4. "Mitteilungen"/Messages: Werden zusammengedampft zu zwei Zeilen:
Subject/Betreff : "11.11.2005 17:47:44 von "userXY"
...

Ich bin auf der Suche nach einem Makro der das Datum "Gesendet" oder "Erhalten" im Format "JJJJ-MM-TT" bzw. "YYYY-MM-DD" an den Anfang eines Betreffs setzt. Dann ein Leerzeichen und dann den Namen, am besten nur Nachname, vom Absender und wieder Leerzeichen. Anschließend kommt dann der Betreff-text wie er vorher war. Ein mögliches ergebnis wäre: Betreff: 2010-02-19 Müller Week of 15 March townmeetings

Ich hoffe es findet sich jemand mit guten Tipps oder gar nem Makro-Vorschlag. Viele Dank im Voraus!!!!
Mitglied: Biber
Biber 09.03.2010, aktualisiert am 18.10.2012 um 18:41:22 Uhr
Goto Top
@TecAttack

--> Detailproblem in eigenem Beitrag behandelt, siehe Outlook 2003 Makro für Betreff-Veränderung.


Grüße
Biber
Mitglied: 106543
106543 19.04.2013 um 08:27:26 Uhr
Goto Top
Hi Biber,

habe folgendes Problem, bei meinem eigenen Mailversand und bin beim googlen über deinen Beitrag gestolpert ;)
Und zwar habe ich auch eine Mail-Automatisierung in einen VBA-Quellcode eingebunden.

der Code funktioniert einwandfrei, die Mail wird auch erstellt und angezeigt, wie ich es will, allerdings kommt bei mir jedes mal die Abfrage

Dort kann ich nur auswählen, dass der Zugriff für maximal 10 min erlaubt sein soll.
Gibt´s da irgend ein Workaround oder eine Möglichkeit, das abzustellen?

Grüße
Exze
Heiß diskutierte Beiträge
question
Server mit zwei Interfaces und Standardgateways am selben Switch gelöst incisor2kVor 1 TagFrageNetzwerkgrundlagen13 Kommentare

Guten Morgen. Ich brauche bitte ein bisschen Hirnschmalz von euch, um ggf. Auswirkungen nachfolgendes Szenarios zu verstehen. Gestern ist mir etwas seltsames untergekommen. Kurz umrissen: ...

question
Windows 11 Upgrade nicht möglichben1300Vor 20 StundenFrageWindows 1114 Kommentare

Guten Morgen ! ich habe einen Gaming PC, mit folgende Spezifikationen: Leider kann ich diesen nicht auf Windows 11 upgraden: Welche Optionen bleiben mir, um ...

question
SFP+ auf RJ45 AdapterHasahirnVor 1 TagFrageLAN, WAN, Wireless5 Kommentare

Hallo, bin neu hier und hoffe das richtige Unterforum mit meiner Frage erwischt zu haben. Falls das nicht der Fall sein sollte bitte entsprechend verschieben, ...

question
Anfänger benötigt Hilfe bei PDFsBarabanVor 1 TagFrageMicrosoft8 Kommentare

Hallo zusammen, ich bin ein leidgeplagter Endnutzer der bei dem leidigen Thema PDFs zusammenführen Hilfe benötigt. Ich habe mir hier schon ein paar Beiträge durchgelesen ...

question
Was ich benötige ist ein guter Wechselrahmen 5,25"Lefty0815Vor 1 TagFrageFestplatten, SSD, Raid8 Kommentare

Hallo an alle, ich such mir noch einen Wolf :-) Was ich benötige ist ein Wechselrahmen 5,25" für eine zwei oder drei 3,5Zoll Festplatten (SATA ...

question
Spam in den PNs gelöst erikroVor 19 StundenFrageAdministrator.de Feedback8 Kommentare

Moin, das habe ich heute in meinen PNs gefunden: Hallo, Schatz . Ich hoffe, es geht dir gut, mein Name ist Naomi Haider, ich habe ...

question
VPN per LTE? Hardware? Alternativen? gelöst HerrKohlVor 1 TagFrageRouter & Routing8 Kommentare

Hallo, ich stehe vor einem Problem, welches ich als Laie mit wenig Ahnung lösen möchte/muss. Kurz umrissen: ich betreibe in meinem Büro mehrere Endgeräte, die ...

question
Microsoft Security Baseline sinnvoll?dertowaVor 1 TagFrageWindows 113 Kommentare

Hallo allerseits, ich habe nun im HomeLab ein wenig mit den Security Baselines von Microsoft experimentiert und komme zu keinem wirklichen Ergebnis. Es gibt einige ...