在 Outlook 中发送电子邮件时如何自动运行宏?

Coc*_*key 6 outlook vba

下面的脚本效果很好,但每次打开 Outlook 时我都必须手动运行 Initialize_handler 例程才能使其工作。

Public WithEvents myOlApp As Outlook.Application

Public Sub Initialize_handler()
Set myOlApp = CreateObject("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
Run Code Online (Sandbox Code Playgroud)

就我所看到的自动完成这项工作而言,我应该能够将以下脚本添加到 ThisOutlookSession。但是,这不起作用,我不知道为什么。

我的宏安全设置正确,它在启动时运行代码,但由于某种原因它不起作用,直到我手动打开 VBA 编辑器单击 Initialize_handler 并按 F5。

Private Sub Application_Startup()
  Initialize_handler
End Sub
Run Code Online (Sandbox Code Playgroud)

nit*_*ton 5

此处描述的复杂方法https://msdn.microsoft.com/en-us/library/office/ff865076.aspx表示“示例代码必须放在类模块中”。

我建议你只使用特殊的类模块 ThisOutlookSession。你可以用你自己的类模块进行试验,但如果你只是想让它工作,那么在 ThisOutlookSession 中用它替换你的所有代码。

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
Run Code Online (Sandbox Code Playgroud)