2014-02-12 54 views
2

我已經創建了一個可以打開郵件的宏。我想創建一個規則,當我打開郵件時自動執行該規則。打開電子郵件時運行宏的規則

我不希望這條規則全部運行,只是當我打開一封郵件時,我不希望在收到的每封郵件上強制執行此規則。

回答

1

繼@ZZA意見,

試試這個代碼:

Public WithEvents myItem As Outlook.MailItem 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If Item.Class = olMail Then 
     Set myItem = Item 
    End If 
End Sub 


Private Sub myItem_Open(Cancel As Boolean) 

    'Your code 
End Sub 

代碼粘貼在ThisOutlookSession enter image description here

編輯

爲了避免'Your code觸發,我們需要一個事件事件禁用者:

Public WithEvents myItem As Outlook.MailItem 
Public EventsDisable as Boolean 

Private Sub Application_ItemLoad(ByVal Item As Object) 
    If EventsDisable = True Then Exit Sub 
    If Item.Class = olMail Then 
     Set myItem = Item 
    End If 
End Sub 


Private Sub myItem_Open(Cancel As Boolean) 
    EventsDisable=True 
    'Your code 
    EventsDisable=False 
End Sub 
+0

嗨,我試圖通過只添加:msgbox「測試」來測試它,但它不工作,我不能運行這個宏,因爲它會帶你到屏幕上,在哪裏你必須選擇運行哪個宏。 – ZZA

+0

您是否將代碼粘貼到'ThisOutlookSession'對象中? – hstay

+0

是的,我做了,但我必須重新啓動Outlook,現在它可以工作,但它不會做我需要做的事情。當我選擇郵件時,彈出消息框,而不是打開郵件時。 – ZZA