MailItem.Move 已读邮件的方法
MailItem.Move method for mail that is read
我试图首先检查特定文件夹(“待处理”)中的邮件是否已被阅读。如果邮件已读,将其移动到另一个特定文件夹(“完成”)。
对于“待处理”中的剩余邮件,请保存附件并将其标记为“已读”。
当我尝试使用“.Move”将每封已读邮件从“待处理”文件夹移动到“完成”时,掉落
"error 424. An object is required".
问题是OItem.Move OFolderDst
。
Sub MoveInbox2Reviewed()
Dim OutlookApp As Outlook.Application
Dim ONameSpace As Object
Dim OItem As Outlook.MailItem
Dim OFolderSrc As Object
Dim OFolderDst As Object
Dim Path As String
Set OutlookApp = New Outlook.Application
Set ONameSpace = OutlookApp.GetNamespace("MAPI")
Set OFolderSrc = ONameSpace.GetDefaultFolder(olFolderInbox).Folders("pending")
Set OFolderDst = ONameSpace.GetDefaultFolder(olFolderInbox).Folders("done")
Path = "C:\Users\..."
For Each OItem In OFolderSrc.Items.Restrict("[Unread] = False")
OItem.Move OFolderDst 'The problem is here
Next
For Each OItem In OFolderSrc.Items
OItem.Attachments.SaveAsFile Path & Attachment.DisplayName
OItem.UnRead = False
Next
End Sub
每次调用 Move
时,集合都会减少一项。因此,我建议使用反向 for
循环来代替从文件夹中移动项目。例如:
for i = Items.Count to 1 step -1
Items(i).Move folder
next
因此,在代码中您可能会获取所有未读项目(由 Items
集合表示),然后调用反向循环来移动项目。
我试图首先检查特定文件夹(“待处理”)中的邮件是否已被阅读。如果邮件已读,将其移动到另一个特定文件夹(“完成”)。
对于“待处理”中的剩余邮件,请保存附件并将其标记为“已读”。
当我尝试使用“.Move”将每封已读邮件从“待处理”文件夹移动到“完成”时,掉落
"error 424. An object is required".
问题是OItem.Move OFolderDst
。
Sub MoveInbox2Reviewed()
Dim OutlookApp As Outlook.Application
Dim ONameSpace As Object
Dim OItem As Outlook.MailItem
Dim OFolderSrc As Object
Dim OFolderDst As Object
Dim Path As String
Set OutlookApp = New Outlook.Application
Set ONameSpace = OutlookApp.GetNamespace("MAPI")
Set OFolderSrc = ONameSpace.GetDefaultFolder(olFolderInbox).Folders("pending")
Set OFolderDst = ONameSpace.GetDefaultFolder(olFolderInbox).Folders("done")
Path = "C:\Users\..."
For Each OItem In OFolderSrc.Items.Restrict("[Unread] = False")
OItem.Move OFolderDst 'The problem is here
Next
For Each OItem In OFolderSrc.Items
OItem.Attachments.SaveAsFile Path & Attachment.DisplayName
OItem.UnRead = False
Next
End Sub
每次调用 Move
时,集合都会减少一项。因此,我建议使用反向 for
循环来代替从文件夹中移动项目。例如:
for i = Items.Count to 1 step -1
Items(i).Move folder
next
因此,在代码中您可能会获取所有未读项目(由 Items
集合表示),然后调用反向循环来移动项目。