Vba Outlook:发送电子邮件前自定义弹出逻辑窗口
一位同事有一个绝妙的主意,就是加强内部电子邮件中Slack的使用。我们考虑了一个自定义弹出窗口,当用户准备发送内部电子邮件时会出现。此消息将显示“请选择Slack进行内部通信。您确定仍要发送吗?” 我考虑在VBA中使用Application.ItemSend事件来触发弹出窗口。 我在VBA方面没有太多经验,但我发现这段代码让我开始学习:Vba Outlook:发送电子邮件前自定义弹出逻辑窗口,vba,email,outlook,Vba,Email,Outlook,一位同事有一个绝妙的主意,就是加强内部电子邮件中Slack的使用。我们考虑了一个自定义弹出窗口,当用户准备发送内部电子邮件时会出现。此消息将显示“请选择Slack进行内部通信。您确定仍要发送吗?” 我考虑在VBA中使用Application.ItemSend事件来触发弹出窗口。 我在VBA方面没有太多经验,但我发现这段代码让我开始学习: Public WithEvents myOlApp As Outlook.Application Public Sub Initialize_handler
Public WithEvents myOlApp As Outlook.Application
Public Sub Initialize_handler()
Set myOlApp = Outlook.Application
End Sub
Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "Are you sure you want to send " & Item.Subject & "?"
If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
Cancel = True
End If
End Sub
非常感谢您的帮助。因此,您找到的代码片段非常完美,它讨论了
with events
实例属性。现在它不能在标准模块内声明。您需要将其放入一个类或ThisOutlookSession
建议使用类来挂接应用程序级事件。但考虑到你的说法,我在VBA方面没有太多经验,这里是一种少课的方式
但对于您的需求,您只需将代码放入
应用程序中的
下的ThisOutlookSession
。这样可以避免创建类并在启动时初始化它
Option Explicit
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "Are you sure you want to send " & Item.Subject & "?"
If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
Cancel = True
End If
End Sub
请注意,此代码位于ThisOutlookSession中
那么问题是什么?Cancel参数必须声明为“ByRef”。