Outlook 2013 VBA 规则随机失败

Outlook 2013 VBA 规则随机失败

我的目标是不让 Outlook 删除来自指定地址的所有邮件,保留最多 3 封最新邮件(它对于一些日常订阅(如优惠券等)确实有帮助)。

我有许多规则,将邮件分类到不同的文件夹中,并用特殊类别标记它们(我们称之为“数量:3”)。我还有列表中的最后一条规则,它运行我的 VBA 脚本:它计算文件夹中来自同一发件人的邮件(具有此“数量:3”类别)并删除旧邮件,只留下不超过要求的数量。
当 Outlook 正在运行并收到新邮件时,整个过程都正常工作。但是当我第一次启动 Outlook 并且服务器上有新邮件时 - 它会随机告知脚本规则执行失败并将其关闭...
我的脚本会记录日志,所以我很确定这不是脚本错误的问题。此外,当我在 Outlook 中打开调试日志记录时,问题似乎消失了。系统日志中也没有任何可疑的东西......

所以问题是我如何才能找出问题所在?如果答案是否定的 - 有没有办法在 Outlook 2013 中实现我想要的效果?
是的,我知道 MS 建议不是将 VBA 规则与其他类型的规则一起使用,无论顺序如何等等,但仍然不敢相信它们使它变得如此难以预测......

附言:同样的解决方案在 Outlook 2007 中运行得或多或少比较稳定......

答案1

如果您不想一次性完成所有操作,而是用类别标记要删除的内容。然后,您可以为该类别创建一个虚拟搜索文件夹。这样做的好处是可以跨所有实际文件夹进行操作。

然后,您可以编写一些简单的 VBA,在 Outlook 启动和关闭时执行,删除该虚拟搜索文件夹的内容。

那么您就不需要依赖按正确顺序触发的邮件传输事件。

答案2

伙计!看来我终于修好了(捂脸)所以它的工作方式全部时间是:

  • 相同的基于规则的 VBA 子程序执行主要任务
  • Application_Startup/Application_Quit 事件处理程序打开/关闭相应规则以避免 Outlook 启动时出现随机错误(请参阅我对此处问题/答案的评论)
  • 自动启动快捷方式复制粘贴微软 Office 2013文件夹开始 -> 所有程序(它最初是 OUTLOOK.EXE 的快捷方式,并且当您以这种方式启动 Outlook 时,它似乎根本不会触发事件处理程序 O_o)

相关内容