Immer aktuellste Mail verwenden

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Immer aktuellste Mail verwenden
von: Willi Wacker
Geschrieben am: 29.09.2015 16:38:30

Hallo Leute,
nachdem ich nun endlich den Provider gewechselt bekommen habe, wovon habe die eigentlich Ahnung :( ?, kann ich hier auch endlich antworten bzw. neue Fragen stellen.
Und hier kommt dann auch gleich eine: wie schaffe ich es von Excel aus im Outlook folgendes festzustellen und dann entsprechend zu verarbeiten:
Suche nach einer Mail mit einem bestimmten Betreff die der aktuellen Zeit am nächsten liegt. Ich habe bisher:
1.) mit dem Folgenden zähle ich die Mails und finde heraus ob an ein und demselben Tag 2* dieselbe Mail gekommen ist.


   Set objOutlook = CreateObject("Outlook.Application")
   Set objnSpace = objOutlook.GetNamespace("MAPI")
   Set objFolder = objnSpace.Folders("WWacker").Folders("Postfach").Folders("Firma").Folders("  _
_
Neue Mail")
   
   EmailCount = objFolder.Items.Count
    If EmailCount > 1 Then
        MsgBox "Für den heutigen Tag gibt es zwei Dateien. Bitte die ältere von Hand löschen"
        GoTo Schluss
    End If
    
    If EmailCount < 1 Then
        GoTo MailOrdnerleer:
    End If

2.) Wenn 1 nicht zutrifft, dann lese ich das Ganze aus und kopiere den Anhang der Mail in einen Ordner:

Sub OutlookGetMail()
    Dim olApp As Object, objFolder As Object, objItem As Object
    Dim Fname As Variant
    Dim FileNameFolder As Variant
    
    Set olApp = CreateObject("outlook.application")
    Set objFolder = olApp.GetNamespace("MAPI").Folders("WWacker").Folders("Postfach").Folders("  _
_
Firma").Folders("Neue Mail")
    For Each objItem In objFolder.Items
      If objItem.Subject Like "*" & "Test-Datei" & "*" Then
        If objItem.Attachments.Count > 0 Then
          With objItem.Attachments.item(1)
            If .fileName Like "*.zip" Then
              .SaveAsFile "C:\" & .fileName
            End If
          End With
        End If
      Else
        GoTo KeinepassendeMail
      End If
    Next
    Fname = "C:\Test-datei.zip"
    FileNameFolder = "C:\"
    Set oApp = CreateObject("Shell.Application")
    oApp.Namespace(FileNameFolder).CopyHere oApp.Namespace(Fname).Items
KeinepassendeMail:
    Set objFolder = Nothing
    Set olApp = Nothing
End Sub

3.) und dann frage ich den Zeitstempel der herunter geladenen Datei ab:

    DateHeute = Date
    DateCreated = FileDateTime("C:\Test-Datei")
    DateLeft = Left(DateCreated, 10)
    
    If DateLeft <> DateHeute Then
        MsgBox " Es wurde heute noch keine Datei zugeschickt. Bitte versuchen Sie es später  _
noch einmal."
        DateZaehler = 1
        GoTo Schluss
    Else
        DateZaehler = 0
'    MsgBox " nu is ja doch wat da."
    End If
Zugegeben, das Ganze geht mit Sicherheit schneller und besser, aber dazu bin ich zu sehr Anfänger und zum Zweiten entwickelt sich das Ganze derzeit erst.
Mein Hauptproblem ist, daß, wenn mehrere Mails im Ordner liegen, das System die älteste Mail verwendet, und damit nie die aktuellen Daten heruntergeladen werden, da dann Punkt 3 sagt: DateLeft ist älter als DateHeute.
Was mir sehr helfen würde, wäre, wenn ich in der Lage wäre, schon den Zeitstempel der Outlook Mail zu lesen, um dann immer die Mail, die der aktuellen Zeit am nächsten ist zu öffnen und zu entpacken s. Punkt(2). Somit ggf. eine Erweiterung von Punkt 2 ??
Alternativ wäre es auch eine Lösung nach dem Download des Anhanges und der sauberen Verarbeitung der Daten die Mail zum Abschluß zu löschen, so daß der Mailordner immer leer ist.
Da gibt’s doch sicher eine Lösung für?!
Schon mal Danke für Eure Hilfe.
Willi

Bild

Betrifft: dreifach owT.
von: mumpel
Geschrieben am: 29.09.2015 19:12:17


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Problem bei VBA-EMail-Versand: meta-Angabe in head"