我使用
处理传入的电子邮件Private WithEvents objNewMailItems As Outlook.Items
作为启动过程和
Private Sub objNewMailItems_ItemAdd(ByVal item As Object)
每当新电子邮件到达收件箱时执行。
问题:如何(手动)停止执行此程序?
答案 0 :(得分:0)
objNewMailItems
被声明为事件提供程序;只要设置了引用,它就会触发事件。
要使其停止,您需要将其引用设置为Nothing
。
Public Sub StopHandlingNewMailItems()
Set objNewMailItems = Nothing
End Sub
获取当前正在分配该对象引用的代码,将其移至StartHandlingNewMailItems()
过程,然后在启动时调用它;现在您可以随意打开/关闭处理新邮件项目。
答案 1 :(得分:0)
如果将多个项目(超过16个)添加到文件夹,则可能根本不会触发ItemAdd
事件。我建议改为处理NewMailEx
类的Application
事件。对于Microsoft Outlook处理的每个收到的项目,将触发一次此事件。该项目可以是几种不同的项目类型之一,例如MailItem
,MeetingItem
或SharingItem
。 EntryIDsCollection
字符串包含与该项目对应的条目ID。
当新消息到达收件箱时以及在发生客户端规则处理之前,将触发NewMailEx
事件。您可以使用EntryIDCollection
数组中返回的Entry ID来调用NameSpace.GetItemFromID方法并处理该项目。
Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
if Cancel then
Dim itm as Outlook.MailItem
Set itm = NS.GetItemFromID(EntryIDCollection)
If itm.Class = olMail Then
Debug.Print "mail received"
Debug.Print itm.Parent.Parent.name
End If
End If
End Sub
要阻止VBA宏运行,您可以添加一个名为“ CancelButton”的按钮来设置标志,然后在NewMailEx
事件处理程序中检查该标志。
Bool Cancel
Private Sub CancelButton_OnClick()
Cancel=True
End Sub
最后,您可能会发现How to stop VBA code running?帖子很有帮助。