2016-09-01 6 views
2

Я пытаюсь написать код для загрузки еженедельных заданий (вложений) и сохранить его в папке.Метод items.restrict для поиска элементов, которые отправляются сегодня

У меня есть код, который проходит через каждый элемент и загружает все вложения, но идет от последней до самой ранней даты. Мне нужен последний, поскольку предыдущие вложения будут перезаписывать более поздние.

Я добавил метод ограничения для поиска предметов, которые отправляются сегодня, но он по-прежнему проходит через весь почтовый ящик.

Sub downloadAttachment() 

Dim ns As NameSpace 
Dim Inbox As MAPIFolder 
Dim Item As Object 
Dim myItems As Items 
Dim Atmt As Attachment 
Dim FileName As String 
Dim i As Integer 
Dim sFilter As String 


'Setting variable for inbox. 
Set ns = GetNamespace("MAPI") 
Set Inbox = ns.GetDefaultFolder(olFolderInbox) 
**sFilter = "[ReceivedTime]>=""&Date()12:00am&""" 
Set myItems = Inbox.Items.Restrict(sFilter)** 

i = 0 

'Error handling. 
On Error GoTo downloadattachment_err 

'if no attachments, msgbox displays. 
If Inbox.Items.Count = 0 Then 
    MsgBox "There are no messages in the Inbox.", vbInformation, _ 
      "Nothing Found" 
    Exit Sub 
End If 

'Goes through each item in inbox for attachments. 
For Each Item In Inbox.Items 
    For Each Atmt In Item.Attachments 
    If Right(Atmt.FileName, 3) = "txt" Then 
     FileName = "C:\losscontroldbases\pendingworkdownload\" & Atmt.FileName 
     Atmt.SaveAsFile FileName 
     i = i + 1 
    End If 
    Next Atmt 
Next Item 

'If attachments found, the displays message. 
If i > 0 Then 
    MsgBox "I found " & i & " attached files." _ 
    & vbCrLf & "I have saved them into the C:\losscontroldbases\pendingworkdownload." _ 
    & vbCrLf & "Have a nice day!" 

Else 
    MsgBox "I didn't find any attached files in your mail." 
End If 

'Clearing memory. 
downloadattachment_exit: 
    Set Atmt = Nothing 
    Set Item = Nothing 
    Set ns = Nothing 
    Exit Sub 

'Error handling code. 
downloadattachment_err: 
    MsgBox " An unexpected error has occured." 

End Sub 
+0

Я уже исправил его. Спасибо за вопрос! – Nigel

+0

Пожалуйста, не забывайте отмечать ответ, поэтому мы знаем его решение – 0m3r

ответ

2

Ваш код ссылается на строку "date" как буквальное значение. Используйте что-то вроде

Filter = "[ReceivedTime]>= '" & CStr(Date()) & " 12:00am' "