VBA Excel - Outlook Mails auslesen inkl. Unterordner eines Funktionspostfaches - Script anpassen
Hallo zusammen,
ich finde leider mal wieder nicht die Lösung und würde mich freuen, wenn mir einer auf die Sprünge hilft.
Es soll per Excel VBA eine Outlook Funktionspostfach ausgelesen werden. Es sollen alle Ordner ausgelesen werden, also teilweise bis zu 5 Unterordner.
Das vorhandene Script macht aktuell 2 Punkte nicht:
1. Unterordner automatisch auslesen
2. den Ordner wiedergeben inkl. Unterordner, wo die Mail liegt in Spalte C - beginnend ab C2
Bitte helft mir
Danke Jens
ich finde leider mal wieder nicht die Lösung und würde mich freuen, wenn mir einer auf die Sprünge hilft.
Es soll per Excel VBA eine Outlook Funktionspostfach ausgelesen werden. Es sollen alle Ordner ausgelesen werden, also teilweise bis zu 5 Unterordner.
Das vorhandene Script macht aktuell 2 Punkte nicht:
1. Unterordner automatisch auslesen
2. den Ordner wiedergeben inkl. Unterordner, wo die Mail liegt in Spalte C - beginnend ab C2
Bitte helft mir
Danke Jens
Sub Outlook_Mail_auslesen()
'Globale Fehlerbehandlung -> Excel soll automatisch weitermachen, egal welcher Fehler
On Error Resume Next
'Variablendeklaration
Dim olOrdner As Outlook.MAPIFolder
Dim AnzahlEmail As Integer, i As Integer, Email As Integer, a As Long
Dim VonDatum As Date, BisDatum As Date
Sheets("Maileingang").Select
Cells.Select
Selection.ClearContents
Set olOrdner = GetObject("", "Outlook.Application").GetNamespace("MAPI").Folders("funktionspostfach@arbeit.com").Folders("Inbox").Folders("AAA").Folders("erledigt").Folders("CCC") '.Folders("EEE")
'Setzen der Variable -> es sollen alle Nachrichten im Ordner 'Posteingang (olFolderInbox) gezählt werden
AnzahlEmail = olOrdner.Items.Count
' Überschriften im neuen Blatt -> die erste Zeile von A1 - C1
[A1].Value = "Betreff"
[B1].Value = "Datum Uhrzeit"
[C1].Value = "Ordner"
'Erste Zeile soll Fett formatiert werden
Rows(1).Font.Bold = True
VonDatum = InputBox("Bitte Datum des ersten zu betrachtenden Tages eingeben:", "Datumseingabe", Format(Now - 1, "DD.MM.YYYY"))
BisDatum = InputBox("Bitte Datum des letzten zu betrachtenden Tages eingeben:", "Datumseingabe", Format(Now, "DD.MM.YYYY 23:59:59"))
'Beginn Schleifendurchlauf (Schleife 1) -> die Variable 'i' läuft solange, wie Anzahl der EMails vorhanden sind
While i < AnzahlEmail
i = i + 1
'
'Anzeigen einer Nachricht in der Statuszeile
Application.StatusBar = "Lese Posteingang " & _
Format(i / AnzahlEmail, "0%")
'Was soll mit den Nachrichten geschehen? (Schleife 2)
With olOrdner.Items(i)
'If .ReceivedTime >= VonDatum And .ReceivedTime <= BisDatum Then
Email = Email + 1
'Zelle 1 mit dem Wert Betreff in der EMail
Cells(Email + 1, 1).Value = .Subject
'Zelle 2 mit dem Wert 'Empfangen am' in der EMail
Cells(Email + 1, 2).Value = .ReceivedTime
'End If
'Ende der Schleife 2
Debug.Print Email
End With
'Ende der Schleife 1
Wend
'Die Objekt-Variable muss wieder geleert werden
Set olOrdner = Nothing
'Die Zelle 'A2' soll selektiert werden
[A2].Select
'Die Exceldatei wird gespeichert
ActiveWorkbook.Saved = True
'Die Statuszeile wird wieder ausgeschaltet
Application.StatusBar = False
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 376827
Url: https://administrator.de/forum/vba-excel-outlook-mails-auslesen-inkl-unterordner-eines-funktionspostfaches-script-anpassen-376827.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
6 Kommentare
Neuester Kommentar
Unterordner automatisch auslesen
Mach dir eine Rekursive Funktion die sich selbst für jeden Unterordner aufruft.Beispiel:
Sub RecurseFolders(ByVal fldr As Folder)
For Each itm In fldr.items
' Mach was mit der Mail
msgbox itm.Subject
Next
'Prozedur ruft sich selbst für alle Unterordner erneut auf
For Each subfolder In fldr.Folders
RecurseFolders subfolder
Next
End Sub
War ja wieder klar ...
Viel Spaß beim lernen ...i'm out
Sub Outlook_Mail_auslesen()
'Globale Fehlerbehandlung -> Excel soll automatisch weitermachen, egal welcher Fehler
On Error Resume Next
'Variablendeklaration
Dim olOrdner As Outlook.MAPIFolder
Dim AnzahlEmail As Integer, i As Integer, Email As Integer, a As Long
Dim VonDatum As Date, BisDatum As Date
Sheets("Maileingang").Select
Cells.Select
Selection.ClearContents
Set olOrdner = GetObject("", "Outlook.Application").Session.Stores("funktionspostfach@arbeit.com").GetDefaultFolder(6).Folders("AAA").Folders("erledigt").Folders("CCC") '.Folders("EEE")
'Setzen der Variable -> es sollen alle Nachrichten im Ordner 'Posteingang (olFolderInbox) gezählt werden
AnzahlEmail = olOrdner.Items.Count
' Überschriften im neuen Blatt -> die erste Zeile von A1 - C1
[A1].Value = "Betreff"
[B1].Value = "Datum Uhrzeit"
[C1].Value = "Ordner"
'Erste Zeile soll Fett formatiert werden
Rows(1).Font.Bold = True
RecurseFolders olOrdner
'Die Objekt-Variable muss wieder geleert werden
Set olOrdner = Nothing
'Die Zelle 'A2' soll selektiert werden
[A2].Select
'Die Exceldatei wird gespeichert
ActiveWorkbook.Save
'Die Statuszeile wird wieder ausgeschaltet
Application.StatusBar = False
End Sub
Sub RecurseFolders(ByVal fldr As Object)
For Each itm In fldr.items
set n = Cells(Rows.Count,"A").End(xlUp).Offset(1)
With itm
n.Resize(1,3).Value = Array(.Subject,.ReceivedTime,fldr.FolderPath)
End With
Next
'Prozedur ruft sich selbst für alle Unterordner erneut auf
For Each subfolder In fldr.Folders
RecurseFolders subfolder
Next
End Sub
Was ich noch nicht verstehe ist, wo durch dein Sub weiß, welches Funktionspostfach es abfragen soll. Mir ist der Zusammenhang nicht klar.
s.o.Set olOrdner = GetObject("", "Outlook.Application").Session.Stores("funktionspostfach@arbeit.com").GetDefaultFolder(6).Folders("AAA").Folders("erledigt").Folders("CCC") '.Folders("EEE")
OlDefaultFolders Enumeration