Excel VBAでOutlookのメールを取り込む(その1)

Pocket

諸事情により、Outlookの受信フォルダに溜まっているメールの一覧をExcelに取り込んでみたくなったので、いろいろなサイトをみながらExcelマクロVBAを作成してみました。

なお、VBAを書き始めるまでのExcelの準備作業は以下に記載していますので、参考にしてください。(そもそもどうやったら、ExcelでVBAを書き始めることができるのかについて詳しく書いています。)

受信フォルダのメールリストを作成するVBA

1.外部ライブラリの参照設定

まず、今回のVBAは、下記の2つの外部ライブラリへの参照設定が必要です。

・Microsoft Outlook 16.0 Object Library
・Microsoft Scripting Runtime

参照設定の仕方は、VBAのエディターにて、ツールバーの[ツール]-[参照設定]を選択すると以下のように参照設定のポップアップが表示されますので、そこから選択するだけです。

Microsoft 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なども作成していきたいと考えています。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA