Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Outlook - Automatisierte Mailverarbeitung mit VBA-Makros

Anleitung Entwicklung VB for Applications

Mitglied: Biber

Biber (Level 5) - Jetzt verbinden

12.11.2005, aktualisiert 18.10.2012, 102422 Aufrufe, 15 Kommentare

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=737da1d59d0a8e35cf4265b656cc00ed&q ..." (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, "&auml;", "ä") 
105.
         NewSubject = Replace(NewSubject, "&uuml;", "ü") 
106.
         NewSubject = Replace(NewSubject, "&ouml;", "ö") 
107.
         NewSubject = Replace(NewSubject, "&Auml;", "Ä") 
108.
         NewSubject = Replace(NewSubject, "&Uuml;", "Ü") 
109.
         NewSubject = Replace(NewSubject, "&Ouml;", "Ö") 
110.
         NewSubject = Replace(NewSubject, "&szlig;", "ß") 
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-Nachbehandlung
Hoffe, es macht Appetit auf ein bissi VBA.

Frank / der Biber aus Bremen
Mitglied: 5960
14.11.2005 um 09:08 Uhr
UiUiUi...

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

Hoffentlich werde ich den Code dann auch ein wenig verstehen
Bitte warten ..
Mitglied: Biber
14.11.2005 um 09:54 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
Bitte warten ..
Mitglied: gerdmbs
06.12.2005 um 10:38 Uhr
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
Bitte warten ..
Mitglied: connysoft
19.02.2007 um 13:35 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
Bitte warten ..
Mitglied: Biber
19.02.2007 um 19:49 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
Bitte warten ..
Mitglied: kurd51
19.06.2007 um 01:29 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
Bitte warten ..
Mitglied: jalias
17.09.2007 um 11:14 Uhr
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
Bitte warten ..
Mitglied: Biber
17.09.2007 um 11:34 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
Bitte warten ..
Mitglied: Chaoslord1974
14.07.2008 um 12:25 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.
Bitte warten ..
Mitglied: Biber
14.07.2008 um 13:42 Uhr
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
Bitte warten ..
Mitglied: Chaoslord1974
14.07.2008 um 14:39 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.
Bitte warten ..
Mitglied: Biber
14.07.2008 um 20:48 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
Bitte warten ..
Mitglied: TecAttack
23.02.2010 um 08:30 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!!!!
Bitte warten ..
Mitglied: Biber
09.03.2010, aktualisiert 18.10.2012
@TecAttack

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


Grüße
Biber
Bitte warten ..
Mitglied: 106543
19.04.2013 um 08:27 Uhr
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.
01.
Dim sAbsender As String 
02.
Dim Outlook As Object 
03.
Set Outlook = CreateObject("Outlook.Application") 
04.
 
05.
sAbsender = [ABSENDER ON BEHALF] 
06.
With Outlook.createitem(0) 
07.
    .SentOnBehalfOfName = sAbsender 
08.
    .Recipients.Add sEmpfänger 
09.
    .Subject = sBetreff 
10.
    .Body = sNachricht 
11.
    .ReadReceiptRequested = False 
12.
    .display 
13.
End With 
14.
 
15.
Set Outlook = Nothing
der Code funktioniert einwandfrei, die Mail wird auch erstellt und angezeigt, wie ich es will, allerdings kommt bei mir jedes mal die Abfrage
01.
Ein Programm versucht auf Ihre in Outlook gespeicherten E-Mail-Adressen zuzugreifen. Möchten Sie dies erlauben?
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Sicherheitsgrundlagen
Bestimmte VBA Makros zulassen (6)

Frage von geocast zum Thema Sicherheitsgrundlagen ...

VB for Applications
gelöst VBA Outlook - Mail delivery system (5)

Frage von carolin.zelda zum Thema VB for Applications ...

Outlook & Mail
Importieren von excel daten in outlook vba - Teil 2 (5)

Frage von Bgervais zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...