【发布时间】:2014-04-11 16:42:33
【问题描述】:
需要将 Outlook 电子邮件中的 Excel 附件从最旧的电子邮件保存到最新的电子邮件,并将电子邮件标记为已读。如果有多个未读电子邮件,较新的附件将覆盖较旧的附件。
我每天都会收到许多电子邮件,需要保存这些电子邮件才能生成报告。但是,如果错过了一个报告,它会被忽略,我会转到下一个数据集。以下工作但并不总是首先保存最旧的......它会跳来跳去。
我尝试了多种方法来先保存最旧的,但都没有成功。关于如何使这始终如一地首先接收最旧的电子邮件的任何帮助。谢谢
Sub Save_Attachments()
Dim olApp As Outlook.Application, olNameSpace As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder, olMail As Outlook.MailItem
Dim olAttachment As Outlook.Attachment, lngAttachmentCounter As Long
Dim i As String
On Error GoTo Oooops
Set olApp = New Outlook.Application
Set olNameSpace = olApp.GetNamespace("MAPI")
Set olFolder = olNameSpace.GetDefaultFolder(olFolderInbox).Folders("sub_folder")
If olFolder Is Nothing Then Exit Sub
For Each olMail In olFolder.Items
If olMail.UnRead = True Then
For Each olAttachment In olMail.Attachments
lngAttachmentCounter = lngAttachmentCounter + 1
olAttachment.SaveAsFile ThisWorkbook.Path & "\zzzzz.xls"
Next olAttachment
End If
If olMail.UnRead Then
olMail.UnRead = False
End If
Next olMail
Exit Sub
Oooops:
MsgBox Err.Description, vbExclamation, "An error occurred"
End Sub
【问题讨论】: