関連する電子メール フィールドをサブフォルダにエクスポートするマクロがありますが、新しい電子メールを受信するたびに自動的に実行する必要があります。実際、件名のみをエクスポートしたいのですが、メールが「M_M_Asia」に届いたときにそのマクロ (「ExportMessagesToExcel」) をトリガーするスクリプトはありますか?
Outlook 2007 を使用しています。
誰かが助けてくれれば、私は永遠に感謝します. 乾杯。
Application_NewMail
モジュールで(またはNewMailEx
)イベントを使用してThisOutlookSession
、独自のマクロを呼び出すことができるはずです。
もう1つの方法は、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