,我希望MsgBox彈出。VBA Outlook 2010:每當有新郵件到達公共文件夾時,監控公共文件夾中的新電子郵件
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專業版。
從Eugene的回答中的評論「我通過將WithEvents代碼片段放入類模塊來修正錯誤。」你的源代碼應該已經指明瞭所有的代碼將放在ThisOutlookSession模塊中。 – niton