2017-03-02 42 views
1

特定の電子メールからメールを受信した場合に、処理を実行するOutlookのVBAにリスナーがあります。senderEmailAddressを確認してください

問題は、エラーメール(配信不能メール)を受け取った場合、そのプロパティがないメールで条件が実行されるため、メソッドがクラッシュすることです。

私は被験者が何であるかわからない。

プロパティが存在するかどうか、または送信者が一致するかどうかを確認するために確認できる別のプロパティがあるかどうかをテストできますか?事前に

多くのおかげで

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 = "[email protected]" Then 

'Set the yellow flag icon 

obj.FlagIcon = olYellowFlagIcon 

obj.Save 

End If 

End If 

Next 

End Sub 

答えて

3

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] = '[email protected]'" 

    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コレクションにフィルタを適用します。

関連する問題