【发布时间】:2019-04-12 08:56:18
【问题描述】:
我已经(使用来自 SO 的信息)实现了一个 VBA 宏,该宏在从 Outlook 规则中删除“运行脚本”选项后运行以处理新电子邮件。我这样做如下:
Private WithEvents Items As Outlook.Items
Public Sub Application_Startup()
' Add an inbox event listener
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
' default local Inbox
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
MsgBox "Startup macro run"
End Sub
Private Sub Items_ItemAdd(ByVal item As Object)
'Do something on new email arrival
.
.
.
End Sub
但是收件箱侦听器似乎经常停止工作,我要么必须重新启动 Outlook,要么手动重新运行“启动”宏以使其恢复正常 - 这似乎是一个没有解决方案的常见问题。
问题 - 我不是 VBA 专家,我想知道是否可以在 'Items_ItemAdd(ByVal item As Object)' 宏结束时简单地重新运行“Application_Startup”宏来重新启动侦听器?
【问题讨论】:
-
这对你没有任何好处——你知道当 Items.ItemAdd 事件触发时事件监听器工作。如果没有,ItemAdd 也不会触发。
-
@DmitryStreblechenko 我不知道,因为我是 Outlook VBA 的新手????但我知道它停止工作,而且我知道重新启动 Outlook 似乎可以让它再次工作,所以我想知道当我的所有搜索都显示这是一个没有解决方案的已知问题时,如何让它继续工作。希望作为答案发布的解决方案可以解决问题。
-
每半小时运行一次代码stackoverflow.com/questions/12257985/…