Outlook:在发送电子邮件之前使用逻辑自定义弹出窗口

时间:2017-03-15 21:47:16

标签: vba email outlook

一位同事有一个很好的想法,可以强化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

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

因此,您找到的代码段是完美的,并讨论了WithEvents实例属性。现在它无法在标准模块中声明。您需要在课堂上或ThisOutlookSession

建议使用Class来挂钩应用程序级别事件。但是考虑到你的声明我在VBA中没有太多经验,这里只有一类课程。

但是根据您的要求,您只需将代码放在Application_ItemSendThisOutlookSession下。这样您就可以避免在启动时创建类并初始化它。

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

enter image description here