【发布时间】:2020-06-25 15:45:44
【问题描述】:
这个问题很简单,但由于某种原因对我来说很难实现。关闭 Outlook 2007 时如何触发退出/关闭事件?
我想在 VBA 中显示一个是/否 msgbox,它根据关闭 Outlook 时选择的选项执行代码。
我认为我有解决方案:
Dim WithEvents myOlApp As Outlook.Application
Sub Initialize_handler()
Set myOlApp = CreateObject("Outlook.application")
End Sub
Private Sub myOlApp_Quit()
MsgBox "TEST"
End Sub
首先我尝试将它插入到我的模块中,但这给了我Only valid in object modules 错误。所以然后我创建了一个新的类模块并将代码粘贴到这里(没有给出错误),但事件仍然不会触发。出了什么问题以及如何解决?
【问题讨论】:
-
不确定它在 2007 年是否与 2010 年相同。但我的项目中有一个 Microsoft Outlook 对象,甚至其中还有一个
private sub Application_Quit。所以你可以从中调用一个函数 -
试图将子模块作为常规模块插入到两个类模块中,但遗憾的是没有触发。
-
@Sam:刚刚看到你的评论。我已经删除了我的答案。这也适用于我。这是一个有效的答案,前提是 2007 年的行为方式与 2010 年相同,我相信它会(除非我错了)你可能想把这个答案?
-
@SiddharthRout 你的回答成功了,谢谢!但是有一个问题,模块保存在 VBAProject.OTM 文件中。此文件位于共享文件夹中,以便使用其 Outlook 的每个人都可以获取更新/代码。使用
ThisOutlookSession时,这是否意味着我必须将Private Sub Application_Quit()粘贴到在各自“自己的会话”中使用代码的每个Outlook 用户?我假设现在只有这个用户获得了 msgbox(ThisSession 所属的用户)。 -
This 是您要找的吗?