1

関連する電子メール フィールドをサブフォルダにエクスポートするマクロがありますが、新しい電子メールを受信するたびに自動的に実行する必要があります。実際、件名のみをエクスポートしたいのですが、メールが「M_M_Asia」に届いたときにそのマクロ (「ExportMessagesToExcel」) をトリガーするスクリプトはありますか?

Outlook 2007 を使用しています。

誰かが助けてくれれば、私は永遠に感謝します. 乾杯。

4

2 に答える 2

0
  1. Application_NewMailモジュールで(またはNewMailEx)イベントを使用してThisOutlookSession、独自のマクロを呼び出すことができるはずです。

  2. もう1つの方法は、VBAスクリプトを実行するルールを作成することですが、VBAサブはMailItemパラメーターを処理する必要があります。

    Option Explicit
    
    Sub MyVBARule(poMail As MailItem)
    
    End Sub
    
于 2012-09-17T12:27:44.143 に答える
0

または、「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
于 2012-09-17T14:03:01.437 に答える