从Excel使用Outlook事件

时间:2016-03-09 14:34:29

标签: excel vba outlook

我正在尝试在Excel宏中使用Outlook对象模型中的“ItemAdd”事件MSDN Link Here;但是,我无法找到利用Excel外部事件的方法。

我的预期用例是监控共享邮箱中收到的项目并记录其接收。我目前正在一个计时器上运行一个循环来检查新的电子邮件,但是如果可能的话,我希望每次事件触发时都会记录。

不幸的是,我无法直接从Outlook运行任何宏,所以我只能从其他Office应用程序访问Outlook对象模型。

1 个答案:

答案 0 :(得分:1)

您可以这样做,但您需要在Excel中使用Class模块来完成它。

课程模块 - " myOutlook"或称之为你想要的任何东西。

 Private WithEvents myItems As Outlook.Items

 Private Sub Class_Initialize()

     Dim oNS As Namespace
     Dim myOL As Outlook.Application

     Set myOL = New Outlook.Application
     Set oNS = myOL.GetNamespace("MAPI")
     Set myItems = oNS.GetDefaultFolder(olFolderInbox).Items
     'Set this equal to the folder you wish to use this on

 End Sub

 Private Sub myItems_ItemAdd(ByVal Item As Object)

      Debug.Print "Got_EMAIL!!!"

 End Sub

然后,在常规模块中执行以下操作:

 Dim myOutlook As myOutlook

 Sub TestSub()

      Set myOutlook = New myOutlook

  End Sub

初始化用户定义类的实例后,事件将被它捕获。

显然,您需要设置" myItems"要链接到正确的收件箱的对象。对于我的,它只是链接到我最简单的测试默认邮箱。