031 エクセルVBAで「返信した時間」をリスト化 Proptag版

こんにちは、くのへ@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列に返信した日時が、それぞれ記載されます。さらに、返信・転送ステータスが記載されます。


解説はまた今度~。
ではまた別の記事で~
🦅バサバサ~

くのへスタジオはこちら。
Outlook-VBAコーナーはこちら。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です