问题
I have created a macro, that does certain things, to an opened mail. I would like to create a rule, that does it automatically, when I open the mail.
I don't want this rule to run all time, just when I open a mail, I don't want to force this rule on each mail I receive.
回答1:
Following @ZZA comments,
try this code:
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
Paste code in ThisOutlookSession

EDIT
To avoid 'Your code
triggering the event we need an event disabler:
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
来源:https://stackoverflow.com/questions/21727768/rule-that-runs-macro-when-an-email-is-opened