Outlook - Automatisierte Mailverarbeitung mit VBA-Makros
12.11.2005
04:43:14 Uhr70330 Aufrufe
14 Antworten
04:43:14 Uhr
14 Antworten
0 Neutral
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.. warum so wenig Speicherplatz.
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: "http://www.administrator.de/?content=737d ...; (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 ..
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
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.. warum so wenig Speicherplatz.
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: "http://www.administrator.de/?content=737d ...; (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 ..
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"
01.
'------snipp Makro zur Administrator-Mail-Nachbehandlung 02.
Option Explicit 03.
04.
Public Sub FormatAdminMsg() 05.
06.
'Drei Konstanten für die notify-Mails von Administrator.de 07.
Const ADMIN_NSender = "notify@administrator.de" 08.
Const ADMIN_NPrefix = "[administrator.de] Auf den Beitrag " 09.
Const ADMIN_NSuffix = " wurde geantwortet." 10.
11.
'Drei Konstanten für die message-Mails von Administrator.de 12.
Const ADMIN_MSender = "message@www.administrator.de" 13.
Const ADMIN_MPrefix = "Das administrator.de-Mitglied " 14.
Const ADMIN_MSuffix = " hat Ihnen diese Nachricht zugeschickt." 15.
16.
'Der einfallsreiche Titel einer Notiz, die geschrieben wird 17.
Const ADMIN_NOTIFY = "Administrator-Messages" 18.
19.
'Der einfallsreiche Titel einer Textdatei, die geschrieben wird 20.
Const ADMIN_TEXTFILE = "AdminMsg.txt" 21.
22.
'Deklarationen 23.
'zuerst für Outlook selbst und den Namespace... ohne die beiden geht nichts. 24.
Dim MyOLApp As Application 25.
Dim myNameSpace As NameSpace 26.
'Ein paar Ordner brauche ich..drei zum Spielen.... 27.
Dim FolderAdminCopy, FolderAdminInbox, FolderAdminProper As MAPIFolder 28.
' ...und ein paar Ordner zur Orientierung: Posteingang und den "Obersten" 29.
Dim myInbox As MAPIFolder, FolderRoot, FolderAdminNotes As MAPIFolder 30.
'jetzt die kleineren Sachen.. ein Notiz-Object, zwei Mail-Objects 31.
Dim NoteX As NoteItem 32.
Dim MailX, MailXCopy As MailItem 33.
'und ein bisschen Kroppzeug... Zeichen- und Zählveriablen.. 34.
Dim NoteText$, NewSubject$, NewBody$, notifyCutLen 35.
Dim i, j, k As Integer 36.
Dim NoteFound As Boolean 37.
Dim fs As Object, a 38.
notifyCutLen = Len(ADMIN_NPrefix) + Len(ADMIN_NSuffix) + 2 39.
' nun gehts endlich los... 40.
Set MyOLApp = CreateObject("Outlook.Application") 41.
Set myNameSpace = MyOLApp.GetNamespace("MAPI") 42.
'Default-Mailbox nehmen.. manche haben nur eine, andere ein Dutzend 43.
' die aktive Mailbox laut Profil ist logischerweise der Parent (neudeutsch für "Vadder" vom "Posteingang" 44.
Set FolderRoot = myNameSpace.GetDefaultFolder(olFolderInbox).Parent 45.
'nehmen wir mal an, Mails von administrator.de liegen im "Posteingang", siehe "!!!Hint" oben 46.
Set FolderAdminInbox = myNameSpace.GetDefaultFolder(olFolderInbox) 47.
'....einen Ordner für Eins-zu-Eins-Kopien anlegen 48.
Set FolderAdminCopy = CreateFolderIfNotExist("AdminCopy", FolderRoot) 49.
'....und einen für die nachbearbeiteten "Notifies" und "Messages" 50.
Set FolderAdminProper = CreateFolderIfNotExist("AdminProper", FolderRoot) 51.
'....und einen für die Notiz namens "Administrator-Messages", die ich zusätzlich anlege. 52.
Set FolderAdminNotes = CreateFolderIfNotExist("AdminNotizen", FolderRoot, olFolderNotes) 53.
' eine Variante, um ein bestimmtes Item zu suchen... die ganze Liste durchwackeln.. 54.
' hier suche ich eine Notiz, die ADMIN_NOTIFY ("Administrator-Messages") <i>heißt</i>. 55.
For Each NoteX In FolderAdminNotes.Items 56.
Debug.Print "Subject: "; "'" & NoteX.Subject & "#" 57.
If StrComp(NoteX.Subject, ADMIN_NOTIFY, vbTextCompare) = 0 Then 58.
NoteText = NoteX.Body 59.
NoteFound = True 60.
Exit For 61.
End If 62.
Next 63.
If Not NoteFound Then 64.
' wenn noch keine existiert (oder ich zu blöd zum Finden war), 65.
'dann eine neue Notiz anlegen 66.
Set NoteX = FolderAdminNotes.Items.Add(olNoteItem) 67.
NoteX.Body = ADMIN_NOTIFY 68.
' die erste Zeile des Body-Textes wird automatisch zum "Namen" der Notiz 69.
NoteX.Save 70.
Debug.Print "FolderAdminNotes.Subject "; NoteX.Subject 71.
End If 72.
Debug.Print NoteText 73.
74.
Set fs = CreateObject("Scripting.FileSystemObject") 75.
Set a = fs.CreateTextFile(Environ$("temp") & "" & ADMIN_TEXTFILE, True) 76.
77.
For Each MailX In FolderAdminInbox.Items 78.
' wenn eine Mail vom "Message"-Sender message@administrator.de... 79.
If StrComp(MailX.SenderName, ADMIN_MSender, vbTextCompare) = 0 Then 80.
j = InStr(1, MailX.Body, ADMIN_MPrefix, vbTextCompare) 81.
k = InStr(j + 2, MailX.Body, ADMIN_MSuffix, vbTextCompare) 82.
NewBody = Mid(MailX.Body, j + Len(ADMIN_MPrefix), k - j - Len(ADMIN_MPrefix)) 83.
Set MailXCopy = MailX.Copy '1:1-Kopie in den Ordner "Admincopy" 84.
MailXCopy.Move FolderAdminCopy 85.
MailX.Body = NewBody 86.
MailX.Subject = MailX.SentOn & " von " & NewBody 87.
MailX.Save 88.
MailX.Move FolderAdminProper 89.
Debug.Print NewBody 90.
NoteX.Body = NoteX.Body & vbCrLf + MailX.Subject 91.
NoteX.Save 92.
End If 93.
' wenn eine Mail vom "Notify"-Sender notify@administrator.de... 94.
If StrComp(MailX.SenderName, ADMIN_NSender, vbTextCompare) = 0 Then 95.
If StrComp(Left(MailX.Subject, Len(ADMIN_NPrefix)), ADMIN_NPrefix) = 0 And _ 96.
StrComp(Right(MailX.Subject, Len(ADMIN_NSuffix)), ADMIN_NSuffix) = 0 Then 97.
NewSubject = Mid(MailX.Subject, Len(ADMIN_NPrefix) + 2, _ 98.
Len(MailX.Subject) - notifyCutLen) 99.
' die ganzen "RE: "s brauch ich nicht.. weg damit 100.
While StrComp(Left(NewSubject, 4), "RE: ", vbTextCompare) = 0 101.
NewSubject = Mid(NewSubject, 5) 102.
Wend 103.
' noch eben schnell die HTML-Maskierungen wegnehmen aus den Mails: 104.
NewSubject = Replace(NewSubject, "ä", "ä") 105.
NewSubject = Replace(NewSubject, "ü", "ü") 106.
NewSubject = Replace(NewSubject, "ö", "ö") 107.
NewSubject = Replace(NewSubject, "Ä", "Ä") 108.
NewSubject = Replace(NewSubject, "Ü", "Ü") 109.
NewSubject = Replace(NewSubject, "Ö", "Ö") 110.
NewSubject = Replace(NewSubject, "ß", "ß") 111.
112.
Debug.Print MailX.SentOn & " " & "'" & NewSubject & "'" 113.
j = InStr(1, MailX.Body, "http://www.administrator.de/", vbTextCompare) 114.
k = InStr(j + 20, MailX.Body, "um die Antworten zu lesen.", vbTextCompare) 115.
NewBody = Mid(MailX.Body, j, k - j - 2) 116.
Set MailXCopy = MailX.Copy '1:1-Kopie in den Ordner "Admincopy" 117.
MailXCopy.Move FolderAdminCopy 118.
MailX.Body = NewBody 119.
MailX.Subject = NewSubject 120.
MailX.Save 121.
MailX.Move FolderAdminProper 122.
Debug.Print NewBody 123.
a.Writeline NewSubject 124.
End If 125.
End If 126.
127.
Next 128.
a.Close 129.
130.
Set FolderAdminCopy = Nothing 131.
Set FolderAdminInbox = Nothing 132.
Set FolderAdminNotes = Nothing 133.
Set FolderAdminProper = Nothing 134.
Set FolderRoot = Nothing 135.
Set myNameSpace = Nothing 136.
137.
End Sub 138.
139.
Private Function CreateFolderIfNotExist(strFolderName As String, _ 140.
ByVal ParentFolder As MAPIFolder, _ 141.
Optional DefaultItemType As Long) As MAPIFolder 142.
On Error GoTo createIt 143.
Set CreateFolderIfNotExist = ParentFolder.Folders(strFolderName) 144.
Exit Function 145.
146.
createIt: 147.
148.
Debug.Print Hex$(Err.Number) & " " & Err.Description 149.
IF StrComp(Hex$(Err.Number), "8004010F", vbTextCompare) = 0 then 150.
' ....wegen der Lesbarkeit vergleiche ich hier: 151.
'.....If Hex$(Err.Number) = "8004010F" Then 152.
' der "echte" Fehlercode ist -2147221233 == 0x8004010F 153.
'..so (in Hex) kann ich den wiedererkennen. Bedeutet: Object nicht gefunden 154.
Err.Clear 155.
Debug.Print DefaultItemType 156.
' wenn kein Type als Parameter mitgegeben, dann als Type "Mails" setzen 157.
If DefaultItemType = 0 Then DefaultItemType = olFolderInbox 158.
On Error Resume Next 159.
Set CreateFolderIfNotExist = _ 160.
ParentFolder.Folders.Add(strFolderName, DefaultItemType) ', olMail) 161.
Else 162.
'was immer sonst passieren mag.. ich habs nicht abgefangen.. 163.
'hier also Crash & Burn... 164.
Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext 165.
End If 166.
' falls das Ordner-Neuanlegen in die Grütze geht... 167.
If Err.Number <> 0 Then Err.Raise Err.Number 168.
Resume Next 169.
End Function 170.
'------snipp Makro zur Administrator-Mail-NachbehandlungHoffe, es macht Appetit auf ein bissi VBA.
Frank / der Biber aus Bremen
Biber schreibt am 14.11.2005 um 09:54:13 Uhr
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
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
connysoft schreibt am 19.02.2007 um 13:35:15 Uhr
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
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
Biber schreibt am 19.02.2007 um 19:49:15 Uhr
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
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
kurd51 schreibt am 19.06.2007 um 01:29:42 Uhr
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
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
Biber schreibt am 17.09.2007 um 11:34:42 Uhr
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
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
Chaoslord1974 schreibt am 14.07.2008 um 12:25:10 Uhr
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.
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.
Biber schreibt am 14.07.2008 um 13:42:38 Uhr
Moin Chaoslord,
willkommen im Forum.
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
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.Oder kann man mit einer Regel ein Makro starten?
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
Chaoslord1974 schreibt am 14.07.2008 um 14:39:38 Uhr
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.
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.
Biber schreibt am 14.07.2008 um 20:48:43 Uhr
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
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
TecAttack schreibt am 23.02.2010 um 08:30:22 Uhr
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!!!!
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!!!!
Biber schreibt am 09.03.2010 um 11:23:04 Uhr
@TecAttack
--> Detailproblem in eigenem Beitrag behandelt, siehe Outlook 2003 Makro für Betreff-Veränderung.
Grüße
Biber
--> Detailproblem in eigenem Beitrag behandelt, siehe Outlook 2003 Makro für Betreff-Veränderung.
Grüße
Biber










5960schreibt am 14.11.2005 um 09:08:25 Uhr