触发VBA代码在Outlook中收到新邮件后运行?

时间:2013-09-03 21:54:14

标签: vba email outlook outlook-vba outlook-2013

Win 7,Outlook 2013我使用VBA代码对到达收件箱的某些文件执行操作。但是,我必须单击/运行按钮才能运行此宏。

有没有办法在电子邮件到达时自动运行此代码?

我尝试过运行脚本的Outlook规则,但没有成功。

我试过这个,但这只有在我运行宏

时才有效
Private Sub Application_NewMail()
    Call GetAttachments_From_Inbox (My Macro)
End Sub

1 个答案:

答案 0 :(得分:0)

我特意使用我作为规则运行的脚本,应用于所有消息。这使您可以轻松,清晰地访问您收到的邮件。由于您希望在收件箱中设置WithEvents的每封邮件中运行此操作,可能是您最好的选择。

例如:

您可以按如下方式为Outlook文件夹创建侦听器:

Private WithEvents mainInboxItems 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 mainInboxItems = objNS.Folders("whatever your main mailbox is called").Folders("AssignNumber").Items
    'assumes your "AssignNumber" folder is a subfolder of the main inbox
    'otherwise you can nest Folders("myArchive").Folders("AssignNumber).items etc
End Sub

您也可以根据需要为多个文件夹执行此操作。

然后,您可以将ItemAdd方法分配给每个方法,例如:

Private Sub mainInboxItems_ItemAdd(ByVal item As Object)
'do Stuff to mailitem
 Call GetAttachments_From_Inbox (item)
End Sub

所有这些代码都可以进入ThisOutlookSession。