こんにちは、くのへ@MasazaneKunoheです。
前回の記事で、返信した時間をリスト化しましたが、さらに「返信」「全員に返信」「転送」の種別を分別できるようにしました。
今回はProptagを使いました~
エクセルVBAで「返信した時間」をリスト化 Proptag版
エクセルでOutlookの参照設定を行った上で、次のコードをエクセルVBAに記述します。参照設定方法はこちらを参照
↓コピペで動くと思います(エクセルVBAに記述)
Sub 返信転送日チェッカー2()
'参照設定を行い、OutlookApplicationインスタンスを作成
Dim appOL As Outlook.Application
Set appOL = New Outlook.Application
'受信トレイのメールをすべて抽出
Dim objItems As Object
Set objItems = appOL.GetNamespace("MAPI").GetDefaultFolder(6).Items
Dim i As Integer: i = 2
Dim objMailItem As Object 'ForEach用の変数。メールアイテムコレクションからメールアイテムを代入
Dim intreplystatus As Integer '102=返信、103=全員に返信、104=転送、それ以外=0
For Each objMailItem In objItems
With objMailItem
'プロパティタグを使う。0x10810003が返信・全員に返信・転送されたかのプロパティを示す
intreplystatus = .PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x10810003")
If intreplystatus <> 0 Then
Cells(i, 1).Value = .ReceivedTime
Cells(i, 2).Value = .Subject
Cells(i, 3).Value = .SenderName
Cells(i, 4).Value = .LastModificationTime
If intreplystatus = 102 Then
Cells(i, 5).Value = "返信"
ElseIf intreplystatus = 103 Then
Cells(i, 5).Value = "全員に返信"
ElseIf intreplystatus = 104 Then
Cells(i, 5).Value = "転送"
End If
intreplystatus = 0
i = i + 1
End If
End With
Next objMailItem
End Sub
エクセルの方はこうやって準備します
使ってみるとこうなります
受信トレイにあるメールすべてに対して、だ―――っと処理が行われ、返信or転送したメールを抽出し、A~C列にメール情報が、D列に返信した日時が、それぞれ記載されます。さらに、返信・転送ステータスが記載されます。
解説はまた今度~。
ではまた別の記事で~
🦅バサバサ~