Дамп данных вложений Outlook в диапазоне дат - PullRequest
2 голосов
/ 28 июня 2011

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

Вот мой код для загрузки всех вложений в папке:

Sub DlAttachments()
    MsgBox ("Cross fingers and click button to start download.")
    Set objOutlook = CreateObject("Outlook.Application")
    Set objNamespace = objOutlook.GetNamespace("MAPI")

    strFolderName = "Special Inbox Admin"
    Set objMailbox = objNamespace.Folders(strFolderName)
    Set objFolder = objMailbox.Folders("Inbox")

    Set colItems = objFolder.Items

    For Each objMessage In colItems
        intCount = objMessage.Attachments.Count
        If intCount > 0 Then
            For i = 1 To intCount
                objMessage.Attachments.Item(i).SaveAsFile "C:\SP_INBOX_DUMP_temp\" & objFolder & "_" & _
                    objMessage.Attachments.Item(i).FileName
            Next
        End If
    Next

    MsgBox ("Download complete. Files downloaded to C:\SP_INBOX_DUMP_temp\")
End Sub

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Используйте метод Restrict, чтобы ограничить элементы в вашей коллекции только теми, которые находятся в определенном диапазоне дат:

Set colItems = objFolder.Items.Restrict("[ReceivedTime] > '06/01/2011 12:00' And [ReceivedTime] < '06/02/2011 12:00'")

По сути, это ограничивает количество писем в итоговой коллекции полученными 6/1. Это воздушный код, поэтому вам, возможно, придется поиграть с синтаксисом.

Подробнее об ограничительном методе: http://msdn.microsoft.com/en-us/library/bb220369(v=office.12).aspx

0 голосов
/ 30 июня 2011

Не ответ, а скорее обходной путь: будучи не в состоянии успешно реализовать решение Макса, я скопировал электронные письма в диапазоне дат в отдельную папку и изменил свой код для работы с новой папкой.Вроде грязно, но эй, это работает.

0 голосов
/ 29 июня 2011

Вы можете использовать свойство SentOn сообщения объекта. Это изменит ваш код на:

Dim myDate as Date

For Each objMessage In colItems
    intCount = objMessage.Attachments.Count
    'get the sent date
    sentDate = objMessage.SentOn
    'ref date (adapt format to your system date format dd/mm/yyyy or mm/dd/yyyy)
    myDate = dateValue("31/1/2009")   
    If myDate > sentDate Then
        'do whatever --> Exit For ?
    End If
    If intCount > 0 Then
        For i = 1 To intCount
            objMessage.Attachments.Item(i).SaveAsFile "C:\SP_INBOX_DUMP_temp\" & objFolder & "_" & _
                objMessage.Attachments.Item(i).FileName
        Next
    End If
Next

С уважением,

Макс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...