gpt4 book ai didi

vba - Outlook VBA 中的 WithEvents 对象最终无法引发事件

转载 作者:行者123 更新时间:2023-12-04 21:26:42 28 4
gpt4 key购买 nike

好的,看起来有人以前遇到过这个问题,但我没有看到任何进一步的评论或解决方案。请参阅 this question 的已接受答案中的编辑.

我的情况是这样的。

我正在使用 Exchange 电子邮件帐户在 Win10 x64 下运行 Outlook 2013。我有时一次运行 Outlook 几天到一周或更长时间而没有关闭它。

我想在将新项目添加到“已发送邮件”文件夹时引发事件。这需要在 Application ItemSend 之后发生。事件,因为,假设我想在消息发送后删除消息,而您无法在 ItemSend 中执行此操作。事件处理程序。

所以我有以下代码:

Public WithEvents goSent As Outlook.Items

Private Sub Application_Startup()

'Establish the global object for the folder we want to monitor.

Set goSent = Session.GetDefaultFolder(olFolderSentMail).Items

End Sub

Private Sub goSent_ItemAdd(ByVal Item As Object)

'Do stuff here.

End Sub

一天或更长时间,一切都运行良好,但最终 ItemAdd事件处理程序停止触发。如果我进入 VBA 编辑器并手动运行 Application_Startup ,然后它再次开始工作。

[编辑:] 另一位信息:“内置”事件,如 Application ItemSend ,无论 Outlook 运行了多长时间,似乎总是可靠地触发。

[编辑 2:] 这一次,我在事件停止触发后搁置了一天。我打开 VBA 编辑器并在 Application ItemSend 中设置断点程序。当它停止时,我查询了 goSent对象并发现 (a) 它仍然存在(而不是 Nothing ),但是 (b) 它只有昨天存在的项目,大概是在它从已发送邮件项目集合中“不受限制”的时候.当我提交新的 Set立即窗口中的声明,它立即开始再次工作。

[编辑 3:] 我注意到 MSDN 文档说要为自定义对象放置事件处理程序——比如我的 ItemAdd事件——类模块。我在 ThisOutlookSession 中有我的,但我的理解是 ThisOutlookSession 是一个类模块。有问题吗?

知道为什么会发生这种情况以及该怎么做吗?我考虑为 Application ItemSend 添加一个事件处理程序并重新分配 goSent每次触发时对象,但它没有解决根本问题。

[编辑 4:] 有一段时间,我有一个 Set Application ItemSend 中的声明处理程序,这似乎主要处理了事情,即使它是一种解决方法,而不是真正的解决方案。当我长时间延迟已发送项目的交付时,它似乎失败了,同时我没有发送任何进一步的消息。然后 goSent对象与 Sent Mail 集合断开连接,邮件实际上是在该点之后和 Application ItemSend 之前从发件箱发送的再次开火。

谢谢!

[编辑 5:] 与原始问题无关:我发现如果我的发件箱中有邮件延迟传递并且 Outlook 在传递时间过去后关闭,我的宏无法使用处于联机模式(即非缓存模式)的 Exchange 服务器完成我想要的操作。在联机模式下,Exchange 本身会发送这些邮件并将它们添加到服务器上的“已发送邮件”文件夹中,因此当 Outlook 重新打开时,这些邮件已经在“已发送邮件”集合中,并且不会触发任何事件。这是有道理的。见讨论 here .看来我需要在我的 Application_Startup 中添加一些内容宏来查找自 Outlook 上次关闭后发送的邮件。

最佳答案

我有类似的问题,从未找到合适的解决方案。我所做的是我编写了一个小批处理脚本来关闭和打开 Outlook 应用程序,然后我在任务计划程序中设置了一个任务,以便在工作时间之外每小时运行一次。您也可以在 vbs 中轻松完成。

关于vba - Outlook VBA 中的 WithEvents 对象最终无法引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548203/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com