Проблема с тем, почему фильтр по текущему коду не применяется к почте - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь настроить макрос, который будет смотреть на мои отправленные товары и удалять любые письма, которые содержат «счет-фактуру» старше 30 дней. В настоящее время он работает для электронных писем старше 30 дней, но, похоже, не применяет фильтр по теме. Код, который я сейчас использую, ниже

Sub MoveAgedMail()

Dim objOutlook As Outlook.Application
Dim objNamespace As Outlook.NameSpace
Dim objSourceFolder As Outlook.MAPIFolder
Dim objDestFolder As Outlook.MAPIFolder
Dim objVariant As Variant
Dim lngMovedItems As Long
Dim intCount As Integer
Dim Items As Outlook.Items
Dim Filter As String
Dim intDateDiff As Integer
Dim strDestFolder As String

Set objOutlook = Application
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objSourceFolder = objNamespace.GetDefaultFolder(olFolderSentMail)

Set objDestFolder = objNamespace.GetDefaultFolder(olFolderDeletedItems)

Filter = "[Subject] = '%" & "invoice" & "%' And [SenderEmailAddress] = _
'abc @hotmail.com'"

Set Items = objSourceFolder.Items.Restrict(Filter)

For intCount = objSourceFolder.Items.Count To 1 Step -1
    Set objVariant = objSourceFolder.Items.Item(intCount)
    DoEvents
    If objVariant.Class = olMail Then

         intDateDiff = DateDiff("d", objVariant.SentOn, Now)

        If intDateDiff > 30 Then

          objVariant.Move objDestFolder

          'count the # of items moved
           lngMovedItems = lngMovedItems + 1

        End If
    End If
Next

MsgBox "Moved " & lngMovedItems & " messages(s)."
Set objDestFolder = Nothing
End Sub

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны работать с ограниченным набором предметов, а не получать новую коллекцию предметов, например:

 For intCount = objSourceFolder.Items.Count To 1 Step -1
   Set objVariant = objSourceFolder.Items.Item(intCount)

Оно должно быть переписано следующим образом:

 For intCount = Items.Count To 1 Step -1
   Set objVariant = Items.Item(intCount)

Вымогут оказаться полезными следующие статьи:

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