VBA宏-自定义回复按钮

VBA宏-自定义回复按钮,vba,outlook,outlook-2013,Vba,Outlook,Outlook 2013,我已经编写了一个宏来在回复窗口中添加密件抄送地址。但我想在点击“回复”按钮时做同样的事情。我无法将宏添加到此按钮,因为它不是自定义按钮。我该怎么做?您可以重新调整内置控件的用途。但在这种情况下,需要开发外接程序,而不是VBA宏。有关更多信息,请参阅 此外,您还可以尝试处理应用程序类的事件,该事件在用户通过检查器(在检查器关闭之前,但在用户单击“发送”按钮之后)或在程序中使用Outlook项目(如MailItem)的Send方法时被激发。在事件处理程序中,您可以尝试将“Type”属性设置为olBc

我已经编写了一个宏来在回复窗口中添加密件抄送地址。但我想在点击“回复”按钮时做同样的事情。我无法将宏添加到此按钮,因为它不是自定义按钮。我该怎么做?

您可以重新调整内置控件的用途。但在这种情况下,需要开发外接程序,而不是VBA宏。有关更多信息,请参阅


此外,您还可以尝试处理应用程序类的事件,该事件在用户通过检查器(在检查器关闭之前,但在用户单击“发送”按钮之后)或在程序中使用Outlook项目(如MailItem)的Send方法时被激发。在事件处理程序中,您可以尝试将“Type”属性设置为olBcc的新条目添加到集合中(请参见相应的属性)。

这是超级用户提供的

“您可以通过VBA添加事件处理程序来拾取ReplyAll事件。类似于以下内容:”


将代码放入ThisOutlookSession模块,然后重新启动。

我尝试了这段代码,但从未调用NewInspector事件。可能是我做错了什么。你能解释一下这个事件什么时候被调用吗?此外,我尝试在子对象中分配mailItem对象,并在每次启动outlook时调用它,它工作正常,但如果在应用程序_Startup()中放入相同的代码,它将找不到当前打开的电子邮件项目。您能给出解决方案吗?如果您还没有这样做,请将代码放入ThisOutlookSession模块,然后重新启动。我已经将此代码放入ThisOutlookSession模块。重新启动后仍不工作。大小测试似乎不正确。代码已更新。
Dim WithEvents insp As Outlook.Inspectors
Dim WithEvents mailItem As Outlook.MailItem

' This is called on Outlook startup
Private Sub Application_Startup()
    Set insp = Application.Inspectors
End Sub

' This is called when a new Inspector is created.
' You use it to pick up on a new mail item event
Private Sub insp_NewInspector(ByVal Inspector As Inspector)

    ' Edit:  The size test appears to be incorrect
    'If Inspector.CurrentItem.Size = 0 And Inspector.CurrentItem.Class = olMail Then

    If Inspector.CurrentItem.Class = olMail Then
       Set mailItem = Inspector.CurrentItem
    End If
End Sub

' Called when you press ReplyAll
Private Sub mailItem_ReplyAll(ByVal Response As Object, Cancel As Boolean)
    Dim msg As String
    Dim result As Integer
    msg = "Do you really want to reply to all?"
    result = MsgBox(msg, vbYesNo, "Reply All Check")
    If result = vbNo Then
        Cancel = True
    End If
End Sub