Outlook VBA, Alternative zu NewMailEx, neue bereits gelesene Email im Posteingang
Hallo zusammen,
ich habe ein Skript in VBA für Outlook, dass bei neuen Emails den PDF-Anhang unter bestimmten Bedingungen extrahiert und abspeichert, dies erfolgt via Application_NewMailEx ... - funktioniert soweit auch.
Allerdings habe ich noch immer das Problem, dass wenn eine E-Mail zuvor mit einem anderen Mail-Client abgerufen wird (auch IMAP), diese dann nicht mehr als neue E-Mail im entsprechenden Outlook-Posteingang erscheint und somit die Prozedur nicht gestartet wird.
Gibt es dafür eine Lösung? Habe bisher nichts gefunden, das die Prozedur bei neuen Emails, die bereits als gelesen deklariert sind, startet.
Gruß
Joha
ich habe ein Skript in VBA für Outlook, dass bei neuen Emails den PDF-Anhang unter bestimmten Bedingungen extrahiert und abspeichert, dies erfolgt via Application_NewMailEx ... - funktioniert soweit auch.
Allerdings habe ich noch immer das Problem, dass wenn eine E-Mail zuvor mit einem anderen Mail-Client abgerufen wird (auch IMAP), diese dann nicht mehr als neue E-Mail im entsprechenden Outlook-Posteingang erscheint und somit die Prozedur nicht gestartet wird.
Gibt es dafür eine Lösung? Habe bisher nichts gefunden, das die Prozedur bei neuen Emails, die bereits als gelesen deklariert sind, startet.
Gruß
Joha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305089
Url: https://administrator.de/forum/outlook-vba-alternative-zu-newmailex-neue-bereits-gelesene-email-im-posteingang-305089.html
Ausgedruckt am: 22.04.2025 um 11:04 Uhr
12 Kommentare
Neuester Kommentar

Machst du mit dem ItemAdd - Event eines Items-Objektes
Regel:Beim verschieben einer Nachricht in einen best. Ordner, soll diese an das Postfach eines DM-System versendet werden.
Gruß skybird
Regel:Beim verschieben einer Nachricht in einen best. Ordner, soll diese an das Postfach eines DM-System versendet werden.
Gruß skybird

Lesen scheint nicht so deine Stärke zu sein...
Wenn das in ein Modul käme hätte ich darauf hingewiesen. 2ten Link aufmachen kopieren, an deine Bedürfnisse anpassen, fertig.
Wenn das in ein Modul käme hätte ich darauf hingewiesen. 2ten Link aufmachen kopieren, an deine Bedürfnisse anpassen, fertig.

Das Makro läuft erst wenn du Outlook neu gestartet hast!
Wozu ist wohl die Sub
Private Sub Application_Startup() da die das Objekt für das Event setzt?
Natürlich muss Outlook laufen damit es erkennt wenn neue Dateien in den Posteingang verschoben werden. Wenn du bereits darin liegende Mails verarbeiten willst prüfe zusätzlich auch beim Start auf Mails mit einer ForeachSchleufe und prüfe die Eigenschaft Unread dann verarbeitest du sie und verschiebst sie in einen "verarbeitet" Ordner, fertig ist die Laube.
Wozu ist wohl die Sub
Private Sub Application_Startup() da die das Objekt für das Event setzt?
Natürlich muss Outlook laufen damit es erkennt wenn neue Dateien in den Posteingang verschoben werden. Wenn du bereits darin liegende Mails verarbeiten willst prüfe zusätzlich auch beim Start auf Mails mit einer ForeachSchleufe und prüfe die Eigenschaft Unread dann verarbeitest du sie und verschiebst sie in einen "verarbeitet" Ordner, fertig ist die Laube.

Das Application.Startup-Ereignis wird einfach nicht ausgelöst.
Das weist du woher? Hast du dort mal eine msgbox reingesetzt die dir das bestätigt?Sind Makros im Sicherheitscenter freigeschaltet oder nur signierter Code erlaubt ?

Habe Haltepunkte gesetzt zum testen...
Haltepunkte bringen dir bei diesem Event überhaupt nichts, denn die verschwinden nach dem Schließen von Outlook ja wieder (werden nicht gespeichert) und das Event feuert ja nur beim Start ACHTUNG, wenn das Konto ein IMAP Konto ist musst du am Code etwas ändern denn dann hast du quasi zwei Stores, einmal den beim Provider und eine lokale PST in dem Postausgang, Kalender & Co liegen, deswegen musst du dann den Code im Startup-Event umschreiben:
Public Sub Application_Startup()
Set itmsFolderTest = Application.Session.Stores("Name des IMAP Stores").GetRootFolder.Folders("Posteingang").Items
End Sub

Public Sub Excel_oeffnen()
Dim objExcelApp As Object, wb as Object, strDoc as String
strDoc = "C:\Users\Benutzer\Documents\Test.xlsm"
Set objExcelApp = GetObject(, "Excel.Application")
If objExcelApp Is Nothing Then
Set objExcelApp = CreateObject("Excel.Application")
With objExcelApp
.Workbooks.Open strDoc
.Visible = True
End with
Else
With objExcelApp
For each wb in .Workbooks
If LCase(wb.Path) = LCase(strDoc) then
Msgbox "Dokument ist schon geöffnet!",vbExclamation
Exit Sub
End if
Next
End With
End if
End Sub
Immer diese Offtopics in Threads die nichts damit zu tun haben
Dafür gibt's neue Threads oder das interne Nachrichtensystem.
Und immer schön dran denken:
"Alles für den Dackel, alles für den Club"
Schönen Sondaach
gez. Hausmeister Krause