【发布时间】:2021-06-08 17:09:16
【问题描述】:
我正在尝试在收件箱中搜索包含名为“TAX”的附件的最新电子邮件,并将该附件保存到文件夹中。
这是一个很大的收件箱,所以我限制了按主题行搜索,然后按 ReceivedTime 对选择进行排序。
代码并不总能找到最新的电子邮件。例如,即使有昨天的电子邮件,它也会抓取三天前或一个月前的附件。
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set sharedemail = olNS.CreateRecipient("Company@Email.com")
Set olfldr = olNS.GetSharedDefaultFolder(sharedemail, olFolderInbox)
Set folder = olfldr
Set myTasks = folder.Items.Restrict("[Subject]='Payables'")
myTasks.Sort "[ReceivedTime]", True
'Search folder for 'TAX' or 'tax' attachments, save into prior day folder
For Each olMail In myTasks
If olMail.Attachments.Count > 0 Then
For Each objAtt In olMail.Attachments
If InStr(objAtt.Filename, "TAX") Or InStr(objAtt.Filename, "tax") Then
objAtt.SaveAsFile priorSaveFolder & "TAX.html"
foundFlag = True
Exit For
End If
Next objAtt
End If
If foundFlag = True Then Exit For
Next olMail
我没有按主题行限制,而是尝试限制在某个时间范围内(例如过去 7 天)。
daysAgo = 7
Set myTasks = folder.Items.Restrict("[ReceivedTime]>'" & Format(Date - daysAgo, "DDDDD HH:NN") & "'")
myTasks.Sort "[ReceivedTime]", True
For Each olMail In myTasks
If olMail.Attachments.Count > 0 Then
在线If olMail.Attachments.Count > 0 Then(其余代码相同)。
我收到一个错误
类不支持自动化或不支持预期的接口。
如果我删除myTasks.Sort "[ReceivedTime]", True 行,代码会返回一封在给定时间范围内不是最新的电子邮件。
如何对电子邮件进行排序以从集中提取具有特定附件名称的最新邮件?
【问题讨论】:
-
尝试以相反的顺序排序。