諸事情により、Outlookの受信フォルダに溜まっているメールの一覧をExcelに取り込んでみたくなったので、いろいろなサイトをみながらExcelマクロVBAを作成してみました。
なお、VBAを書き始めるまでのExcelの準備作業は以下に記載していますので、参考にしてください。(そもそもどうやったら、ExcelでVBAを書き始めることができるのかについて詳しく書いています。)
受信フォルダのメールリストを作成するVBA
1.外部ライブラリの参照設定
まず、今回のVBAは、下記の2つの外部ライブラリへの参照設定が必要です。
・Microsoft Outlook 16.0 Object Library
・Microsoft Scripting Runtime
参照設定の仕方は、VBAのエディターにて、ツールバーの[ツール]-[参照設定]を選択すると以下のように参照設定のポップアップが表示されますので、そこから選択するだけです。
2.プログラムの記述
今回作成したVBAの全体は以下の通りです。
各行の意味はコメントで記載していますので、大体わかるのではないかと思います。
' 変数宣言していない場合に警告してくれるらしい
Option Explicit
Sub outlook_mail_list_01()
Dim ol_obj_df, i, n
Dim ol_obj As Outlook.Application
Dim ol_obj_ns, ol_obj_item As Object
' Outlookオブジェクトの生成
Set ol_obj = CreateObject("Outlook.Application")
' メッセージ送受信規約(MAPI)を指定する
Set ol_obj_ns = ol_obj.GetNamespace("MAPI")
' 受信トレイの指定
Set ol_obj_df = ol_obj_ns.GetDefaultFolder(6)
' 受信トレイのメール件数をポップアップ表示
' MsgBox ol_obj_df.Items.Count
' メールを1件ずつ読み込んでExcelに出力
For i = 1 To ol_obj_df.Items.Count
Set ol_obj_item = ol_obj_df.Items(i)
Cells(i, 1) = i
Cells(i, 2) = ol_obj_item.ReceivedTime
Cells(i, 3) = ol_obj_item.Subject
Cells(i, 4) = ol_obj_item.SenderName
Cells(i, 5) = ol_obj_item.SenderEmailAddress
Cells(i, 6) = Left(ol_obj_item.Body, 100)
Next
End Sub
今回は非常にシンプルなものを作成しましたが、今後、時間があれば添付ファイルをローカルのフォルダに保存していくVBAなども作成していきたいと考えています。
コメントを残す