【问题标题】:Rule that runs macro when an email is opened打开电子邮件时运行宏的规则
【发布时间】:2020-06-23 16:12:39
【问题描述】:

我创建了一个宏,它可以对打开的邮件执行某些操作。我想创建一个规则,它会在我打开邮件时自动执行。

我不希望这条规则一直运行,只是当我打开一封邮件时,我不想在收到的每封邮件上都强制执行这条规则。

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    关注@ZZA cmets,

    试试这个代码:

    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 中粘贴代码

    编辑

    为了避免'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
    

    【讨论】:

    • 您好,我尝试通过添加:msgbox "test" 对其进行测试,但它不起作用,我无法运行此宏,因为它会将您带到屏幕,您必须在其中选择要运行的宏。
    • 您是否将代码粘贴到ThisOutlookSession 对象中?
    • 你明白了!我在 Set msg = Application.ActiveExplorer.Selection(1) 上苦苦挣扎。关键是 Open 事件:msdn.microsoft.com/en-us/library/office/ff865989.aspx
    • 查看我上次的编辑。当您创建回复时,您将触发事件 Application_ItemLoad。而且您的代码是一个非常方便的脚本!我可以保留吗? :)
    • 还要小心Set Original= Application.ActiveExplorer.Selection(1),它应该是Set Original=myItem
    猜你喜欢
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2015-09-06
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多