如果从特定电子邮件收到邮件,我在Outlook框中有一个VBA监听器来执行操作。
问题是,如果我收到错误邮件(未送达电子邮件),那么我的条件是在没有该属性的邮件上运行,因此我的方法崩溃了。
我不知道这个主题是什么。
是否有人知道我是否可以测试该属性是否存在,或者是否有其他属性我可以检查以确定我的发件人是否匹配?
非常感谢提前
Sub SetFlagIcon()
Dim mpfInbox As Outlook.Folder
Dim obj As Outlook.MailItem
Dim i As Integer
Set mpfInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("Test")
' Loop all items in the Inbox\Test Folder
For i = 1 To mpfInbox.Items.Count
If mpfInbox.Items(i).Class = olMail Then
Set obj = mpfInbox.Items.Item(i)
If obj.SenderEmailAddress = "someone@example.com" Then
'Set the yellow flag icon
obj.FlagIcon = olYellowFlagIcon
obj.Save
End If
End If
Next
End Sub
答案 0 :(得分:4)
Dim obj as a generic Object
- 除了 MailItem
之外还有其他对象 在您的收件箱中,也是为了改善您的循环尝试 Items.Restrict Method (Outlook)
Option Explicit
Sub SetFlagIcon()
Dim mpfInbox As Outlook.Folder
Dim obj As Object
Dim Items As Outlook.Items
Dim i As Long
Dim Filter As String
Set mpfInbox = Application.GetNamespace("MAPI").GetDefaultFolder _
(olFolderInbox).Folders("Temp")
Filter = "[SenderEmailAddress] = 'someone@example.com'"
Set Items = mpfInbox.Items.Restrict(Filter)
' Loop all items in the Inbox\Test Folder
For i = 1 To Items.Count
If Items(i).Class = olMail Then
Set obj = Items(i)
'Set the yellow flag icon
obj.FlagIcon = olYellowFlagIcon
obj.Save
End If
Next
End Sub
Items.Restrict Method对Items集合应用过滤器,返回一个新集合,其中包含原始中与过滤器匹配的所有项目。