Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Outlook:发送电子邮件前自定义弹出逻辑窗口_Vba_Email_Outlook - Fatal编程技术网

Vba Outlook:发送电子邮件前自定义弹出逻辑窗口

Vba Outlook:发送电子邮件前自定义弹出逻辑窗口,vba,email,outlook,Vba,Email,Outlook,一位同事有一个绝妙的主意,就是加强内部电子邮件中Slack的使用。我们考虑了一个自定义弹出窗口,当用户准备发送内部电子邮件时会出现。此消息将显示“请选择Slack进行内部通信。您确定仍要发送吗?” 我考虑在VBA中使用Application.ItemSend事件来触发弹出窗口。 我在VBA方面没有太多经验,但我发现这段代码让我开始学习: Public WithEvents myOlApp As Outlook.Application Public Sub Initialize_handler

一位同事有一个绝妙的主意,就是加强内部电子邮件中Slack的使用。我们考虑了一个自定义弹出窗口,当用户准备发送内部电子邮件时会出现。此消息将显示“请选择Slack进行内部通信。您确定仍要发送吗?”

我考虑在VBA中使用Application.ItemSend事件来触发弹出窗口。 我在VBA方面没有太多经验,但我发现这段代码让我开始学习:

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”。