2016-07-26 8 views
0

Es gab eine andere Frage, die hier ähnlich war, und ich habe den Ratschlag dort implementiert, aber ich bin immer noch nicht in der Lage, dies dazu zu bringen, irgendetwas zurückzugeben. Sehr einfach; Ich bekomme jeden Tag um 06:01 Uhr eine E-Mail in meinem Hauptposteingang, und am Ende dieses Skripts sollte die oOltargetEmail festgelegt werden. Ich glaube, die Zeichenfolge in der .Restrict() ist korrekt formatiert basierend auf der Dokumentation, aber oOlItm nimmt nie einen Wert.VBA Outlook Restrict gibt "nichts" zurück

 Const olFolderInbox As Integer = 6 
     Const AttachmentPath As String = "C:\Users\TRBYE\Desktop\cheeseReport.csv" 

     Private Sub CommandButton1_Click() 

     Dim oOlAp As Object, oOlns As Object, oOlInb As Object, oOlItm As Object, oOltargetEmail As Object, oOlAtch As Object 
     Dim beginningDate As String, endingDate As String, todaysDateTime As String, todaysDate As String, receivedTime As String, date1 As String 
     Dim x As Integer 

     Set oOlAp = GetObject(, "Outlook.application") 
     Set oOlns = oOlAp.GetNamespace("MAPI") 
     Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox) 

     receivedTime = " 06:01 AM" 
     todaysDateTime = Format(Now(), "ddddd hh:mm AMPM") 
     x = Len(todaysDateTime) 
     todaysDate = Left(todaysDateTime, (Len(todaysDateTime) - 9)) 

     'set start and end time based on strings from above' 
     beginningDate = todaysDate & receivedTime 

     'determine corrrect email' 
     For Each oOlItm In oOlInb.Items.Restrict("[ReceivedTime] = '" & Format(beginningDate, "ddddd h:nn AMPM") & "'") 
      Set oOltargetEmail = oOlItm 
     Next 

     'download attachment to desktop' 
     For Each oOlAtch In oOltargetEmail.Attachments 
      oOlAtch.SaveAsFile AttachmentPath 
     Next 

     'open attachment' 
     Workbooks.Open (AttachmentPath) 
     End Sub 

Antwort

0

Niemals „=“ wenn sie mit den Datum/Zeit-Eigenschaften arbeiten - es wird nie wegen der Rundungsfehler eine exakte Übereinstimmung sein.

0

Ihre beiden Ratschläge geholfen, dies herauszufinden. Hier endet die Arbeit, nur für den Fall, dass jemand in der Zukunft darüber stolpert und es nicht herausfinden kann. Das Hauptproblem bestand darin, dass die [ReceivedTime] nie einen Wert wegen des "=" - Operators wie @Dmitry Streblechenko erwähnte. Danke für die Hilfe!

      'determine corrrect email' 
          For Each oOlItm In oOlInb.Items.Restrict("[ReceivedTime] > '" & Format(beginningDate, "ddddd h:nn AMPM") & "' And [ReceivedTime] < '" & Format(endingDate, "ddddd h:nn AMPM") & "'") 
           Set oOltargetEmail = oOlItm 

            'download attachment to desktop' 
            For Each oOlAtch In oOltargetEmail.Attachments 
             oOlAtch.SaveAsFile AttachmentPath 
            Next 

            'open attachment' 
            Workbooks.Open(AttachmentPath) 
          Next