如何设置一个macros来启动每次电子邮件到达Outlook 2007中的某个子文件夹?

我有一个macros在一个子文件夹中导出电子邮件的相关领域,但我需要它每次收到一个新的电子邮件时自动运行。 事实上,我只想输出主题行,是否有一个脚本会触发这个macros('ExportMessagesToExcel'),当一个电子邮件登陆“M_M_Asia”?

我在Outlook 2007中。

如果有人能帮助,我将永远感激。 干杯。

  1. 您应该能够使用ThisOutlookSession模块中的Application_NewMail (或NewMailEx )事件来调用您自己的macros。

  2. 另一种方法是创build一个运行VBA脚本的规则,但是VBA子程序需要处理一个MailItem参数:

     Option Explicit Sub MyVBARule(poMail As MailItem) End Sub 

或者你可以添加'ItemAdd'事件处理程序,例如:

 Option Explicit Private Const ASIA_FOLDER_NAME As String = "M_M_Asia" Private WithEvents m_outlookFolderItems As Outlook.Items Private Sub Application_Startup() Initialize_Handler End Sub Private Sub m_outlookFolderItems_ItemAdd(ByVal Item As Object) ' You have new mail in folder ASIA_FOLDER_NAME RunExcelMacro End Sub Private Sub Initialize_Handler() Dim outlookFolder As Outlook.MAPIFolder Dim defaultInboxFolder As Outlook.MAPIFolder Dim outlookNameSpace As Outlook.NameSpace Set outlookNameSpace = Outlook.GetNamespace("MAPI") Set defaultInboxFolder = outlookNameSpace.GetDefaultFolder(olFolderInbox) Set outlookFolder = defaultInboxFolder.Folders(ASIA_FOLDER_NAME) Set m_outlookFolderItems = outlookFolder.Items End Sub Public Sub RunExcelMacro() On Error GoTo RunExcelMacro_Err Const path As String = "C:\temp\Excel_VBA\" Const fileName As String = "CallMeFromOutloouk.xlsm" Const macroName As String = "CallMeFromOutlook" Dim excelObject As Object Dim workbookObject As Object Set excelObject = CreateObject("Excel.Application") On Error Resume Next Set workbookObject = excelObject.Workbooks(fileName) On Error GoTo RunExcelMacro_Err If workbookObject Is Nothing Then Set workbookObject = excelObject.Workbooks.Open(path & fileName) End If excelObject.Run fileName & "!" & macroName Exit Sub RunExcelMacro_Err: MsgBox Err.Description End Sub