biber
Goto Top

Outlook - Automatisierte Mailverarbeitung mit VBA-Makros

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: "Desktop updaten" (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"
'------snipp Makro zur Administrator-Mail-Nachbehandlung  
Option Explicit

Public Sub FormatAdminMsg()

'Drei Konstanten für die notify-Mails von Administrator.de  
Const ADMIN_NSender = "notify@administrator.de"  
Const ADMIN_NPrefix = "[administrator.de] Auf den Beitrag "  
Const ADMIN_NSuffix = " wurde geantwortet."  

'Drei Konstanten für die message-Mails von Administrator.de  
Const ADMIN_MSender = "message@www.administrator.de"  
Const ADMIN_MPrefix = "Das administrator.de-Mitglied "  
Const ADMIN_MSuffix = " hat Ihnen diese Nachricht zugeschickt."  

'Der einfallsreiche Titel einer Notiz, die geschrieben wird  
Const ADMIN_NOTIFY = "Administrator-Messages"  

'Der einfallsreiche Titel einer Textdatei, die geschrieben wird  
Const ADMIN_TEXTFILE = "AdminMsg.txt"  

'Deklarationen  
'zuerst für Outlook selbst und den Namespace... ohne die beiden geht nichts.  
Dim MyOLApp As Application
Dim myNameSpace As NameSpace
'Ein paar Ordner brauche ich..drei zum Spielen....  
Dim FolderAdminCopy, FolderAdminInbox, FolderAdminProper As MAPIFolder
' ...und ein paar Ordner zur Orientierung: Posteingang und den "Obersten"  
Dim myInbox As MAPIFolder, FolderRoot, FolderAdminNotes As MAPIFolder
'jetzt die kleineren Sachen.. ein Notiz-Object, zwei Mail-Objects  
Dim NoteX As NoteItem
Dim MailX, MailXCopy As MailItem
'und ein bisschen Kroppzeug... Zeichen- und Zählveriablen..  
Dim NoteText$, NewSubject$, NewBody$, notifyCutLen
Dim i, j, k As Integer
Dim NoteFound As Boolean
Dim fs As Object, a
notifyCutLen = Len(ADMIN_NPrefix) + Len(ADMIN_NSuffix) + 2
' nun gehts endlich los...  
Set MyOLApp = CreateObject("Outlook.Application")  
Set myNameSpace = MyOLApp.GetNamespace("MAPI")  
'Default-Mailbox nehmen.. manche haben nur eine, andere ein Dutzend  
' die aktive Mailbox laut Profil ist logischerweise der Parent (neudeutsch für "Vadder" vom "Posteingang"  
Set FolderRoot = myNameSpace.GetDefaultFolder(olFolderInbox).Parent
'nehmen wir mal an, Mails von administrator.de liegen im "Posteingang", siehe "!!!Hint" oben  
Set FolderAdminInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
'....einen Ordner für Eins-zu-Eins-Kopien anlegen  
Set FolderAdminCopy = CreateFolderIfNotExist("AdminCopy", FolderRoot)  
'....und einen für die nachbearbeiteten "Notifies" und "Messages"  
Set FolderAdminProper = CreateFolderIfNotExist("AdminProper", FolderRoot)  
'....und einen für die Notiz namens "Administrator-Messages", die ich zusätzlich anlege.  
Set FolderAdminNotes = CreateFolderIfNotExist("AdminNotizen", FolderRoot, olFolderNotes)  
' eine Variante, um ein bestimmtes Item zu suchen... die ganze Liste durchwackeln..  
' hier suche ich eine Notiz, die ADMIN_NOTIFY ("Administrator-Messages") <i>heißt</i>.  
For Each NoteX In FolderAdminNotes.Items
   Debug.Print "Subject: "; "'" & NoteX.Subject & "#"  
   If StrComp(NoteX.Subject, ADMIN_NOTIFY, vbTextCompare) = 0 Then
       NoteText = NoteX.Body
       NoteFound = True
      Exit For
   End If
Next
If Not NoteFound Then
   ' wenn noch keine existiert (oder ich zu blöd zum Finden war),   
   'dann eine neue Notiz anlegen  
   Set NoteX = FolderAdminNotes.Items.Add(olNoteItem) 
   NoteX.Body = ADMIN_NOTIFY      
   ' die erste Zeile des Body-Textes wird automatisch zum "Namen" der Notiz  
   NoteX.Save
   Debug.Print "FolderAdminNotes.Subject "; NoteX.Subject  
End If
Debug.Print NoteText

Set fs = CreateObject("Scripting.FileSystemObject")  
Set a = fs.CreateTextFile(Environ$("temp") & "" & ADMIN_TEXTFILE, True)  

For Each MailX In FolderAdminInbox.Items
   ' wenn eine Mail vom "Message"-Sender  message@administrator.de...  
   If StrComp(MailX.SenderName, ADMIN_MSender, vbTextCompare) = 0 Then
         j = InStr(1, MailX.Body, ADMIN_MPrefix, vbTextCompare)
         k = InStr(j + 2, MailX.Body, ADMIN_MSuffix, vbTextCompare)
         NewBody = Mid(MailX.Body, j + Len(ADMIN_MPrefix), k - j - Len(ADMIN_MPrefix))
         Set MailXCopy = MailX.Copy   '1:1-Kopie in den Ordner "Admincopy"  
         MailXCopy.Move FolderAdminCopy
         MailX.Body = NewBody
         MailX.Subject = MailX.SentOn & " von " & NewBody  
         MailX.Save
         MailX.Move FolderAdminProper
         Debug.Print NewBody
         NoteX.Body = NoteX.Body & vbCrLf + MailX.Subject
         NoteX.Save
   End If
   ' wenn eine Mail vom "Notify"-Sender  notify@administrator.de...  
   If StrComp(MailX.SenderName, ADMIN_NSender, vbTextCompare) = 0 Then
     If StrComp(Left(MailX.Subject, Len(ADMIN_NPrefix)), ADMIN_NPrefix) = 0 And _
        StrComp(Right(MailX.Subject, Len(ADMIN_NSuffix)), ADMIN_NSuffix) = 0 Then
         NewSubject = Mid(MailX.Subject, Len(ADMIN_NPrefix) + 2, _
                               Len(MailX.Subject) - notifyCutLen)
         ' die ganzen "RE: "s brauch ich nicht.. weg damit  
         While StrComp(Left(NewSubject, 4), "RE: ", vbTextCompare) = 0  
           NewSubject = Mid(NewSubject, 5)
         Wend
        ' noch eben schnell die HTML-Maskierungen wegnehmen aus den Mails:  
         NewSubject = Replace(NewSubject, "&auml;", "ä")  
         NewSubject = Replace(NewSubject, "&uuml;", "ü")  
         NewSubject = Replace(NewSubject, "&ouml;", "ö")  
         NewSubject = Replace(NewSubject, "&Auml;", "Ä")  
         NewSubject = Replace(NewSubject, "&Uuml;", "Ü")  
         NewSubject = Replace(NewSubject, "&Ouml;", "Ö")  
         NewSubject = Replace(NewSubject, "&szlig;", "ß")  

         Debug.Print MailX.SentOn & " " & "'" & NewSubject & "'"  
         j = InStr(1, MailX.Body, "https://administrator.de/", vbTextCompare)  
         k = InStr(j + 20, MailX.Body, "um die Antworten zu lesen.", vbTextCompare)  
         NewBody = Mid(MailX.Body, j, k - j - 2)
         Set MailXCopy = MailX.Copy   '1:1-Kopie in den Ordner "Admincopy"  
         MailXCopy.Move FolderAdminCopy
         MailX.Body = NewBody
         MailX.Subject = NewSubject
         MailX.Save
         MailX.Move FolderAdminProper
         Debug.Print NewBody
         a.Writeline NewSubject
     End If
   End If
   
Next
a.Close

Set FolderAdminCopy = Nothing
Set FolderAdminInbox = Nothing
Set FolderAdminNotes = Nothing
Set FolderAdminProper = Nothing
Set FolderRoot = Nothing
Set myNameSpace = Nothing

End Sub

Private Function CreateFolderIfNotExist(strFolderName As String, _
            ByVal ParentFolder As MAPIFolder, _
            Optional DefaultItemType As Long) As MAPIFolder
On Error GoTo createIt
Set CreateFolderIfNotExist = ParentFolder.Folders(strFolderName)
Exit Function

createIt:

Debug.Print Hex$(Err.Number) & " " & Err.Description  
IF StrComp(Hex$(Err.Number), "8004010F", vbTextCompare) = 0 then  
    ' ....wegen der Lesbarkeit vergleiche ich hier:   
    '.....If Hex$(Err.Number) = "8004010F" Then  
    ' der "echte" Fehlercode ist  -2147221233 == 0x8004010F   
    '..so (in Hex) kann ich den wiedererkennen. Bedeutet: Object nicht gefunden  
    Err.Clear
    Debug.Print DefaultItemType 
    ' wenn kein Type als Parameter mitgegeben, dann als Type "Mails" setzen  
   If DefaultItemType = 0 Then DefaultItemType = olFolderInbox
   On Error Resume Next
   Set CreateFolderIfNotExist = _ 
       ParentFolder.Folders.Add(strFolderName, DefaultItemType)  ', olMail)  
Else
    'was immer sonst passieren mag.. ich habs nicht abgefangen..   
    'hier also Crash & Burn...  
    Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
End If
' falls das Ordner-Neuanlegen in die Grütze geht...  
If Err.Number <> 0 Then Err.Raise Err.Number   
Resume Next
End Function
'------snipp Makro zur Administrator-Mail-Nachbehandlung  

Hoffe, es macht Appetit auf ein bissi VBA.

Frank / der Biber aus Bremen

Content-ID: 19552

Url: https://administrator.de/tutorial/outlook-automatisierte-mailverarbeitung-mit-vba-makros-19552.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

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
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
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
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
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
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
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
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
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.
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
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.
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
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!!!!
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
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.
Dim sAbsender As String
Dim Outlook As Object
Set Outlook = CreateObject("Outlook.Application")  

sAbsender = [ABSENDER ON BEHALF]
With Outlook.createitem(0)
    .SentOnBehalfOfName = sAbsender
    .Recipients.Add sEmpfänger
    .Subject = sBetreff
    .Body = sNachricht
    .ReadReceiptRequested = False
    .display
End With

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
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