Mit Excel VBA Outlook Posteingang nach Kennzeichnungsstatus auslesen
Hallo,
ich möchte gerne in einer Excel Liste alle Emails aus meinem Posteingang haben, die zur Nachverfolgung gekennzeichnet sind.
Mein Ansatz ist folgender:
Sub EmailRead()
Set olApp = CreateObject("outlook.application")
Set objfolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox
Sheets("Tabelle1").Select
With ActiveSheet.UsedRange
.Value = Empty
End With
For a = 1 To objfolder.items.Count
If objfolder.items(a).unread = True Then '---- nur ungelesene
Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, 1).Value = objfolder.items(a).Subject
End If
Next a
Set objnSpace = Nothing
End Sub
Hier werden nun die Betreff Zeilen aller ungelesenen Nachrichten aufgelistet.
Ich habe aber noch keine Idee wie ich alle bekomme, die ein Nachverfolgungs-Flag gesetzt haben.
Kann mir da jemand helfen ?
Danke
ich möchte gerne in einer Excel Liste alle Emails aus meinem Posteingang haben, die zur Nachverfolgung gekennzeichnet sind.
Mein Ansatz ist folgender:
Sub EmailRead()
Set olApp = CreateObject("outlook.application")
Set objfolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox
Sheets("Tabelle1").Select
With ActiveSheet.UsedRange
.Value = Empty
End With
For a = 1 To objfolder.items.Count
If objfolder.items(a).unread = True Then '---- nur ungelesene
Cells(Cells(Rows.Count, "A").End(xlUp).Row + 1, 1).Value = objfolder.items(a).Subject
End If
Next a
Set objnSpace = Nothing
End Sub
Hier werden nun die Betreff Zeilen aller ungelesenen Nachrichten aufgelistet.
Ich habe aber noch keine Idee wie ich alle bekomme, die ein Nachverfolgungs-Flag gesetzt haben.
Kann mir da jemand helfen ?
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 262936
Url: https://administrator.de/contentid/262936
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo Hellas,
kein Problem machst du effektiver und schneller mit einem Restrict-Filter auf den Posteingang, dann müssen nicht alle Mails einzeln geprüft werden
Da du nicht weiter spezifiziert hast ob die Mails gleichzeitig Ungelesen und geflaggt sein müssen bin ich mal davon ausgegangen das sie beides haben müssen.
Ist das nicht der Fall kannst du das in Zeile 12 durch ändern des AND in ein OR abändern, dann werden sowohl ungelesene oder geflaggte Nachrichten übernommen.
Grüße Uwe
kein Problem machst du effektiver und schneller mit einem Restrict-Filter auf den Posteingang, dann müssen nicht alle Mails einzeln geprüft werden
Da du nicht weiter spezifiziert hast ob die Mails gleichzeitig Ungelesen und geflaggt sein müssen bin ich mal davon ausgegangen das sie beides haben müssen.
Ist das nicht der Fall kannst du das in Zeile 12 durch ändern des AND in ein OR abändern, dann werden sowohl ungelesene oder geflaggte Nachrichten übernommen.
Sub EmailRead()
Dim olApp as Object, objFolder as Object, mail as Object, rngCurrent as Range
Set olApp = CreateObject("outlook.application")
Set objFolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox
With Sheets("Tabelle1")
'Sheetinhalt löschen
.UsedRange.Clear
'Startausgabezelle setzen
Set rngCurrent = .Range("A1")
' Mails auf ungelesene und gleichzeitig geflaggte beschränken
For Each mail In objFolder.Items.Restrict("[Unread] = True AND [FlagRequest] = 'Zur Nachverfolgung'")
rngCurrent.Value = mail.Subject
' Ausgabe eine Zeile nach unten verschieben
Set rngCurrent = rngCurrent.Offset(1, 0)
Next
End With
Set olApp = Nothing
Set objFolder = Nothing
End Sub
Zitat von @hellas:
Hab ich auch die Möglichkeit die Art der Kennzeichnung abzufragen ("Blaue Kennzeichnung", "Rote
Kennzeichnung", "Als erledigt kennzeichnen") ?
Du meinst die Kategorisierung ? Das ist ja was anderes als die Kennzeichnung.Hab ich auch die Möglichkeit die Art der Kennzeichnung abzufragen ("Blaue Kennzeichnung", "Rote
Kennzeichnung", "Als erledigt kennzeichnen") ?
Die Kategorie kann man in dem Restrict Filter leider nicht verwenden, aber du kannst den Filter so einstellen das erst mal gröber gefiltert wird und du dann zusätzlich mit einer IF-Abfrage die Kategorie überprüfst:
if Instr(1,mail.Categories,"Blaue Kategorie",1) then
'....
end if
-edit- Schreibfehler korrigiert
Zitat von @hellas:
Ich arbeite ja noch mit Outlook 2003 da gab es die Trennung von Kategorien und Nachverfolgung noch nicht.
Ah OK.Ich arbeite ja noch mit Outlook 2003 da gab es die Trennung von Kategorien und Nachverfolgung noch nicht.
Das kannst du ja im Filter festlegen:
[FlagRequest] = 'Blaue Kennzeichnung'
OK, die Eigenschaft in Outlook 2003 lautet FlagIcon. Diese kannst du ebenfalls nicht im Filter verwenden so dass du es mit einer If-Abfrage deiner gefilterten Mails machen musst (s. Zeile 13):
Es gibt hier folgende Enumerations-Konstanten als Wert für FlagIcon:
https://msdn.microsoft.com/en-us/library/office/aa211991%28v=office.11%2 ...
Grüße Uwe
Sub EmailRead()
Dim olApp as Object, objFolder as Object, mail as Object, rngCurrent as Range
Set olApp = CreateObject("outlook.application")
Set objFolder = olApp.GetNamespace("MAPI").GetDefaultFolder(6) ' 6 = olFolderInbox
With Sheets("Tabelle1")
'Sheetinhalt löschen
.UsedRange.Clear
'Startausgabezelle setzen
Set rngCurrent = .Range("A1")
' Mails auf ungelesene und gleichzeitig geflaggte beschränken
For Each mail In objFolder.Items.Restrict("[Unread] = True AND [FlagRequest] = 'Zur Nachverfolgung'")
if mail.FlagIcon = 5 then
rngCurrent.Value = mail.Subject
' Ausgabe eine Zeile nach unten verschieben
Set rngCurrent = rngCurrent.Offset(1, 0)
End if
Next
End With
Set olApp = Nothing
Set objFolder = Nothing
End Sub
https://msdn.microsoft.com/en-us/library/office/aa211991%28v=office.11%2 ...
olNoFlagIcon (0)
olPurpleFlagIcon (1)
olOrangeFlagIcon (2)
olGreenFlagIcon (3)
olYellowFlagIcon (4)
olBlueFlagIcon (5)
olRedFlagIcon (6)
Nicht vergessen den Beitrag noch auf gelöst zu setzen. Merci.
Stimmt mit der Konstanten geht es nur wenn du es in Outlook selber nutzt, hatte ich vergessen das dein Code in Excel läuft
Danke für die sehr kompetente Hilfe !!
Gerne