在Outlook 2010中的宏中触发共享邮箱的子例程

时间:2014-05-01 06:17:10

标签: vba email triggers outlook share

我有一个代码可以在电子邮件进入时触发子程序Items_ItemAdd。它非常适合我自己的个人电子邮件收件箱。这是我使用的代码,它是在默认的Outlook模块中编写的,名为 ThisOutlookSession

Option Explicit

Public WithEvents Items As Outlook.Items

Public Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Public Sub Items_ItemAdd(ByVal Item As Object)
  On Error GoTo ErrorHandler
MsgBox "Replace the code for this message with your subroutine"
ProgramExit:
  Exit Sub
ErrorHandler:
  MsgBox Err.Number & " - " & Err.Description
  Resume ProgramExit
End Sub

问题在于我已经尝试了无数种方法来为共享电子邮件收件箱工作,我的老板刚刚将我加入了该组。 F.y.i.在他将我添加到此共享电子邮件的用户列表后,我必须通过文件 - >信息 - >帐户设置 - >帐户设置 - >更改 - >更多设置 - >添加它高级 - >添加,我必须写下共享电子邮件的名称 - 尝试各种解决方案后,使子程序适用于共享电子邮件,例如

http://social.msdn.microsoft.com/Forums/office/en-US/b85f08f0-4f6b-4663-a75e-272350c07d2c/vba-outlook-2010-how-to-detecte-the-new-email-in-shared-mailbox?forum=outlookdev

http://www.slipstick.com/developer/code-samples/process-items-shared-mailbox/

http://www.outlookcode.com/article.aspx?id=62

非它对我有帮助,因为当我实施它时,不会收到任何错误消息,我觉得这个共享电子邮件收件箱触发事件是不可能的。我最有希望的尝试是通过使用 vba调试器手表找到如何找到共享电子邮件收件箱的项目,我替换了下面这一行:

Set Items = objNS.GetDefaultFolder(olFolderInbox).Items

使用新行指向共享电子邮件收件箱的 Items

Set Items = objNS.Folders.Item(4).Items.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items

对我来说,这似乎是正确的项目,所以我认为这将是挑衅性的工作,但同样的故事,没有任何反应。问题是,我有一个完全适用于我的电子邮件收件箱的代码,为什么我不能让它适用于共享电子邮件的收件箱?

1 个答案:

答案 0 :(得分:1)

我看不到是对NameSpace.GetSharedDefaultFolder的任何调用。如果您将收件箱所有者的电子邮件地址作为该方法的参数传递,则您将获得该共享文件夹的正确Folder对象。然后你可以获得Folder.Items,从而访问Items.ItemAdd事件。

NameSpace.GetSharedDefaultFolder方法(Outlook) http://msdn.microsoft.com/en-us/library/office/ff869575(v=office.15).aspx