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