我正在尝试在Excel宏中使用Outlook对象模型中的“ItemAdd”事件MSDN Link Here;但是,我无法找到利用Excel外部事件的方法。
我的预期用例是监控共享邮箱中收到的项目并记录其接收。我目前正在一个计时器上运行一个循环来检查新的电子邮件,但是如果可能的话,我希望每次事件触发时都会记录。
不幸的是,我无法直接从Outlook运行任何宏,所以我只能从其他Office应用程序访问Outlook对象模型。
答案 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"要链接到正确的收件箱的对象。对于我的,它只是链接到我最简单的测试默认邮箱。