Outlook2010で、Aのメールを開いた時に何かしら処理をして
又、そのAのメールを閉じた時に、別の処理(メール作成、送信)をしようと考えています。
Outlook vba の ThisOutlookSessionに下記のコードを入力しますと
通常は、
'''vba
Private WithEvents g_mailItem As mailItem ''(1)
Private Sub g_mailItem_Open(Cancel As Boolean) ''(2)
Aのメールを開いた時の処理をする
End Sub
Private Sub g_mailItem_Open(Cancel As Boolean) ''(3)
Aのメールを閉じた時の処理
'(別の送信メールを作成し、送る)
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim wsMail As Worksheet
Set objOutlook = New Outlook.Application
Set wsMail = ThisWorkbook.Sheets("メール内容")
Set objMail = objOutlook.CreateItem(olMailItem)
With wsMail
objMail.To = "MailAddress@xx.xx" 'メール宛先
objMail.Subject = .Range("B1").Value 'メール件名
objMail.BodyFormat = olFormatPlain 'メールの形式
objMail.Body = .Range("B2").Value 'メール本文
objMail.Send
End With
Set objOutlook = Nothing
End Sub
Private Sub Application_ItemLoad(ByVal Item As Object) ''(4)
Dim mailItem As mailItem
If TypeOf Item Is mailItem Then
Set g_mailItem = Item
End If
End Sub
'''
にて、正常に動作しているのですが
下記の動作をした時に動作しません
⓵ Aのメールを開いてから、Bのメールを開き、AかBのメールを閉じた時のイベント
⓶ Aのメールを開いてから、Aのメールを閉じ、受信フォルダーで他のメールを選択しないで
再びAのメールを開いた時
⓵の場合、g_maileitemの内容が、AのメールからBのメールの内容に変わり、
closeのイベントが、動作しない
⓶の場合、OUTLOOKの受信フォルダで、他のメールを選択しないで同じメールを選択すると
ItemLoadのイベントが、動作しない
と思われます。
別に、Aのメールを開いた後、Bのメールを開いても cansel=true等で 開かなくてもいいです。
何か方法は無いですか?