背景關系:我正在嘗試構建一個 Outlook 宏,它首先檢查是否已讀取特定檔案夾(“待處理”)中的所有郵件。如果郵件被讀取,宏會將其移動到另一個特定檔案夾(“完成”)。
然后,對于“待處理”中的其余郵件,宏保存每封郵件的附件并將它們標記為“已讀”。
問題:當我嘗試使用“未讀”檢查郵件是否已讀時,會出現錯誤 438:物件不承認此屬性或方法。
提前致謝!
代碼:
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
If OItem.UnRead = False Then
OItem.Move OFolderDst
End If
Next
For Each OItem In OFolderSrc
OItem.Attachments.SaveAsFile Path & Attachment.DisplayName
OItem.UnRead = False
Next
End Sub
uj5u.com熱心網友回復:
首先,您正在遍歷檔案夾。不是物品。你需要OFolderSrc.Items.
其次,您永遠不應該遍歷檔案夾中的所有專案,請使用Items.Restrict:
For Each OItem In OFolderSrc.Items.Restrict("[Unread] = true")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/443131.html
