【问题标题】:VBA Outlook 2010: Monitor new emails in public fodlerVBA Outlook 2010:监控公用文件夹中的新电子邮件
【发布时间】: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


【解决方案1】:

尝试使用以下代码:

Private WithEvents NewMail As Items

Public Sub Application_Startup()
   Set NewMail = Application.GetNamespace("MAPI").Folders(2).Folders(2).Folders("XX").Folders("XX").Items
End Sub

Private Sub NewMail_ItemAdd(ByVal Item As Object)
   MsgBox ("new mails arrived")
End Sub

但是,我建议打破长长的调用链:

Set NewMail = Application.GetNamespace("MAPI").Folders(2).Folders(2).Folders("XX").Folders("XX").Items

并在单独的代码行上声明每个属性或方法调用。因此,您将找到产生错误的确切 poperty 或方法调用。

How to get reference to Public Folder Store using Outlook Object Model for Outlook 2010? 文章可能对您有所帮助。

【讨论】:

  • 嗨,你的代码有什么不同?我复制并粘贴了代码,但同样的错误。您可能是对的,拆分代码但错误已经发生在 Private WithEvents... 这可能是 Outlook 本身的错误设置吗?希望是对的,但我已将代码放在“ThisOutlookSession”中
  • 刚刚发现这个 stackoverflow 问题:stackoverflow.com/questions/18796071/… 我刚刚检查了我的参考资料,除此之外的所有参考资料都在那里:Microsoft Forms nn.n Object Library - 但是,我找不到那个。不确定这是否导致问题
  • 我通过将 WithEvents 代码 sn-p 放入类模块来修复错误。但是,代码仍然不起作用。
  • “不起作用”是什么意思?您是否收到错误消息?
  • 什么也没发生。因此,如果有新邮件进入公共或共享文件夹,则应该出现的消息框不会出现。好像代码没有执行
猜你喜欢
  • 2013-01-23
  • 2019-12-24
  • 2019-05-20
  • 1970-01-01
  • 2016-02-05
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多