E-Mails in Excel für bestimmten Zeitraum auslesen (VBA)

ElTobi, Samstag, 01.12.2018, 14:58 (vor 8 Tagen)
bearbeitet von Martin Asal, Sonntag, 02.12.2018, 14:30

Hallo zusammen,

komme leider nicht weiter ... hoffe mir kann jemand helfen


Situation:

Mit diesem Code will ich sämtliche E-Mails eines Funktionspostfaches in eine Excel auslesen lassen.

Problemstellung:
Folgender Code funktioniert - nun würde ich aber gerne nur E-Mails auflisten lassen die innerhalb der Datumsabfrage liegen.
Leider habe ich keine Ahnung wie ich dies in den bestehenden Code einbinden soll.

[Das Postfach dreht noch weitere Schleifen über diverse Unterordner]

Hat jemand eine Idee?

 
 
Option Explicit
 
 
Public Sub ReadMailItems()
 
Dim olapp        As Object
Dim olName       As Object
Dim olHFolder    As Object
Dim olUFolder    As Object
Dim olUFolder2    As Object
 
 
Dim strAttCount  As String
 
Dim olItemsCount As Long
Dim lngAttCount  As Long
Dim letzteZeile  As Long
Dim VonDatum As Date, BisDatum As Date
 
On Error Resume Next
 
Set olapp = CreateObject("Outlook.Application")
Set olName = olapp.GetNamespace("MAPI")
Set olHFolder = olName.Session.Folders("FUNKTIONSPOSTFACH")
Set olUFolder = olHFolder.Folders("Posteingang")
Set olUFolder2 = olHFolder.Folders("1.01 in Bearbeitung")
 
 
[A1].Value = "E-Mail-Ordner"
[B1].Value = "MailFrom"
[C1].Value = "Exchange ID"
[D1].Value = "Datum//Uhrzeit"
[E1].Value = "Betreff"
[F1].Value = "Text"
[G1].Value = "Anzahl Datei-Anhang"
[H1].Value = "Datei-Anhang"
[I1].Value = "Datei-Größe"
[J1].Value = "CC"
[K1].Value = "Empfänger"
 
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"))
 
 
   For olItemsCount = 1 To olUFolder.Items.Count
       With olUFolder.Items.Item(olItemsCount)
 
                 For lngAttCount = 1 To .Attachments.Count
                       If strAttCount = "" Then
                          strAttCount = .Attachments.Item(lngAttCount).Filename                          
 
Else
 
                          strAttCount = strAttCount & vbCrLf & .Attachments.Item(lngAttCount).Filename
                       End If
                 Next lngAttCount
 
                 Sheets("Master").Range("A" & olItemsCount + letzteZeile).Value = olHFolder.Name & "->" & olUFolder.Name
                 Sheets("Master").Range("B" & olItemsCount + letzteZeile).Value = .Sender
                 Sheets("Master").Range("C" & olItemsCount + letzteZeile).Value = .SenderEmailAddress
                 Sheets("Master").Range("D" & olItemsCount + letzteZeile).Value = .ReceivedTime
                 Sheets("Master").Range("E" & olItemsCount + letzteZeile).Value = .Subject
                 Sheets("Master").Range("F" & olItemsCount + letzteZeile).Value = .body
                 Sheets("Master").Range("G" & olItemsCount + letzteZeile).Value = .Attachments.Count
                 Sheets("Master").Range("H" & olItemsCount + letzteZeile).Value = strAttCount
                 Sheets("Master").Range("I" & olItemsCount + letzteZeile).Value = .Size
                 Sheets("Master").Range("J" & olItemsCount + letzteZeile).Value = .cc
                 Sheets("Master").Range("K" & olItemsCount + letzteZeile).Value = .To
 
 
                 strAttCount = ""
    End With
   Next olItemsCount
letzteZeile = Sheets("Master").Range("A" & Rows.Count).End(xlUp).Row
 
For olItemsCount = 1 To olUFolder2.Items.Count
       With olUFolder2.Items.Item(olItemsCount)
 
                 For lngAttCount = 1 To .Attachments.Count
                       If strAttCount = "" Then
                          strAttCount = .Attachments.Item(lngAttCount).Filename
 
                       Else
 
                          strAttCount = strAttCount & vbCrLf & .Attachments.Item(lngAttCount).Filename
 
                       End If
                 Next lngAttCount
 
                 Sheets("Master").Range("A" & olItemsCount + letzteZeile).Value = olHFolder.Name & "->" & olUFolder2.Name
....
 
 
       End With
   Next olItemsCount
 
 
On Error GoTo 0
 
End Sub

E-Mails in Excel für bestimmten Zeitraum auslesen

Martin Asal @, Sonntag, 02.12.2018, 14:43 (vor 7 Tagen) @ ElTobi

nun würde ich aber gerne nur E-Mails auflisten lassen die innerhalb der Datumsabfrage liegen.
Leider habe ich keine Ahnung wie ich dies in den bestehenden Code einbinden soll.

Sorry, aber ich sehe nicht, warum jemand dafür deinen ganzen Code lesen sollte? Vielleicht hilft dir schon das folgende Beispiel:

Sub zeit()
Dim datSuch As Date, datVon As Date, datBis As Date
 
datVon = #1/1/2018#
datBis = #12/31/2018#
 
datSuch = InputBox("Datum aus 2018 eingeben")
 
If datSuch > datVon And datSuch < datBis Then
    Debug.Print datSuch
End If
 
End Sub

Martin

RSS-Feed dieser Diskussion
powered by my little forum