【发布时间】:2015-04-23 19:56:31
【问题描述】:
每当有新邮件到达公共文件夹时,我希望弹出一个 MsgBox。我使用以下代码为我自己的收件箱解决了这个问题:
Private Sub Application_NewMail()
Dim oNS As NameSpace
Dim oFolder As MAPIFolder
Dim oNewMail As MailItem
Set oNS = Application.GetNamespace("MAPI")
Set oFolder = oNS.GetDefaultFolder(olFolderInbox)
Set oNewMail = oFolder.Items.GetFirst
MsgBox oNewMail.subject
End Sub
我还设法通过替换来访问和检索公共文件夹中的最新电子邮件:
Set oFolder = oNS.GetDefaultFolder(olFolderInbox)
通过
Set oFolder = oNS.Folders(2).Folders(2).Folders("XX").Folders("XX")
但是,这显然仅在我手动评估代码时才有效,因为代码仅在新邮件到达我的收件箱时才会执行。我做了一些谷歌搜索,发现了一个监控公用文件夹的潜在解决方案:
Private WithEvents TestMail As Items
Public Sub Application_Startup()
Set TestMail = Application.GetNamespace("MAPI").Folders(2).Folders(2).Folders("XX").Folders("XX").Items
End Sub
Private Sub TestMail_ItemAdd(ByVal Item As Object)
MsgBox ("new mails arrived")
End Sub
编辑 - 编译时的错误:子或函数中的未知属性。我正在使用 Outlook 2010 专业版。
【问题讨论】:
-
来自尤金回答中的评论“我通过将 WithEvents 代码 sn-p 放入类模块来修复错误。”您的源代码应该表明所有代码都将放在 ThisOutlookSession 模块中。
标签: vba outlook monitoring outlook-2010