選択されている複数のメールのメールヘッダー情報を Excel ファイルにエクスポートするマクロ


コメントにて以下のご要望をいただきました。


お世話になります。
  複数のメールのメールヘッダー情報をExcelへ一覧として出力する方法はありますでしょうか?

現在、一度に50件~100件のメールのメールヘッダー情報を手動で確認するという業務がありまして、
  1つ1つクリックしてヘッダー情報を確認するということが非常に手間でありますので、
なんとかこれを自動化したいと思い、Outlookマクロの勉強をはじめたのですが、
ネット上を探してもマクロでメールヘッダーを取り扱う際の情報があまりなく、
もしご存知でしたら、ご教示いただけないでしょうか?

お力添えいただけますと幸いです。


インターネットのメールヘッダーの情報は MAPI の PidTagTransportMessageHeaders というプロパティで取得が可能です。
このプロパティにアクセスするには、MailItem オブジェクトの PropertyAccessor プロパティの GetProperty メソッドに、PidTagTransportMessageHeaders を意味する “http:​//schemas.microsoft.com/mapi/proptag/0x007d001f” という文字列を渡します。
なお、この文字列は URL のように見えますが、実際にはこのような URL は存在せず、Outlook がこの URL にアクセスするようなこともありません。

これを使って、現在表示しているフォルダーで選択した複数のメールのメールヘッダーをまとめて Excel ファイルにエクスポートするマクロは以下のようになります。
なお、エクスポートする Excel ファイルはあらかじめ作成しておいてください。

' ここをトリプルクリックでマクロ全体を選択できます。

Public Sub ExportInternetHeaders()
     Const PidTagTransportMessageHeaders = "http:" & _
         "//schemas.microsoft.com/mapi/proptag/0x007d001f"
     ' Excel のファイル名を指定
     Const EXCEL_FILE = "c:\temp\headers.xlsx"
     Dim objBook As Object 'Excel.Workbook
     Dim objSheet As Object 'Excel.Worksheet
     Dim iRow As Integer
     Dim objMail As MailItem
     ' Excel ファイルを開く
     Set objBook = GetObject(EXCEL_FILE)
     objBook.Windows(1).Activate
     ' シート 1 を取得
     Set objSheet = objBook.Worksheets(1)
     ' データが入っていない行を検索
     iRow = 1
     While objSheet.Cells(iRow, 1) <> ""
         iRow = iRow + 1
     Wend
     ' 現在のフォルダーで選択されているアイテムについて実行
     For Each objMail In ActiveExplorer.Selection
         With objMail
             ' 差出人を 1 列目にコピー
             objSheet.Cells(iRow, 1) = .SenderName
             ' 件名を 2 列目にコピー
             objSheet.Cells(iRow, 2) = .Subject
             ' 受信日時を 3 列目にコピー
             objSheet.Cells(iRow, 3) = .ReceivedTime
             ' ヘッダーを 4 列目にコピー
             objSheet.Cells(iRow, 4) = _
                 .PropertyAccessor.GetProperty(PidTagTransportMessageHeaders)
         End With
         ' 次の行に移動
         iRow = iRow + 1
     Next
     ' Excel ファイルを保存
     objBook.Close True
End Sub

マクロの登録方法やメニューへの追加について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中