Excel VBA 逆引き集 | Outlook連携(受信)

Excel VBA
スポンサーリンク

外部連携 × Outlook連携(受信)

Excel VBAから Outlookの受信メールを取得 することで、Excelを「メールビューア」や「メール管理ツール」として活用できます。
例えば「受信トレイの最新メールを一覧化」「特定条件のメールだけ抽出」「添付ファイルを保存」などが可能です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Outlook連携の流れ(受信)
    1. VBAでOutlookアプリケーションを起動
    2. Namespace("MAPI") でメールボックスにアクセス
    3. Folders("受信トレイ") からメールを取得
    4. 件名・送信者・本文などをExcelに展開
  • 用途例:
    • 最新メールをExcelに一覧化
    • 特定の件名や送信者のメールを抽出
    • 添付ファイルを保存してExcelで管理

テンプレ1:受信トレイの最新メールを取得

Sub GetLatestMail()
    Dim outlookApp As Object
    Dim ns As Object
    Dim inbox As Object
    Dim mail As Object
    
    ' Outlook起動
    Set outlookApp = CreateObject("Outlook.Application")
    Set ns = outlookApp.GetNamespace("MAPI")
    Set inbox = ns.GetDefaultFolder(6) ' 6 = 受信トレイ
    
    ' 最新メールを取得
    Set mail = inbox.Items.GetLast
    
    ' メール情報を表示
    MsgBox "件名: " & mail.Subject & vbCrLf & _
           "送信者: " & mail.SenderName & vbCrLf & _
           "受信日時: " & mail.ReceivedTime
End Sub
VB
  • ポイント:
    • GetDefaultFolder(6) が受信トレイ。
    • Items.GetLast で最新メールを取得。

テンプレ2:受信トレイのメール一覧をシートに展開

Sub GetMailList()
    Dim outlookApp As Object
    Dim ns As Object
    Dim inbox As Object
    Dim mail As Object
    Dim ws As Worksheet: Set ws = Worksheets("MailList")
    Dim i As Long
    
    Set outlookApp = CreateObject("Outlook.Application")
    Set ns = outlookApp.GetNamespace("MAPI")
    Set inbox = ns.GetDefaultFolder(6)
    
    ws.Cells.Clear
    ws.Range("A1").Value = "件名"
    ws.Range("B1").Value = "送信者"
    ws.Range("C1").Value = "受信日時"
    
    i = 2
    For Each mail In inbox.Items
        ws.Cells(i, 1).Value = mail.Subject
        ws.Cells(i, 2).Value = mail.SenderName
        ws.Cells(i, 3).Value = mail.ReceivedTime
        i = i + 1
    Next mail
    
    MsgBox "受信トレイのメール一覧をシートに展開しました!"
End Sub
VB
  • ポイント:
    • For Each mail In inbox.Items で全メールをループ。
    • 件名・送信者・受信日時をExcelに書き込む。

テンプレ3:特定条件のメールだけ抽出(例:件名に「報告」)

Sub GetSpecificMail()
    Dim outlookApp As Object
    Dim ns As Object
    Dim inbox As Object
    Dim mail As Object
    
    Set outlookApp = CreateObject("Outlook.Application")
    Set ns = outlookApp.GetNamespace("MAPI")
    Set inbox = ns.GetDefaultFolder(6)
    
    For Each mail In inbox.Items
        If InStr(mail.Subject, "報告") > 0 Then
            MsgBox "対象メール: " & mail.Subject & vbCrLf & _
                   "送信者: " & mail.SenderName
        End If
    Next mail
End Sub
VB
  • ポイント:
    • InStr(mail.Subject, "報告") で件名に「報告」が含まれるか判定。
    • 条件に合うメールだけ処理。

テンプレ4:添付ファイルを保存

Sub SaveAttachments()
    Dim outlookApp As Object
    Dim ns As Object
    Dim inbox As Object
    Dim mail As Object
    Dim att As Object
    Dim savePath As String
    
    savePath = "C:\temp\attachments\"
    
    Set outlookApp = CreateObject("Outlook.Application")
    Set ns = outlookApp.GetNamespace("MAPI")
    Set inbox = ns.GetDefaultFolder(6)
    
    For Each mail In inbox.Items
        If mail.Attachments.Count > 0 Then
            For Each att In mail.Attachments
                att.SaveAsFile savePath & att.FileName
            Next att
        End If
    Next mail
    
    MsgBox "添付ファイルを保存しました!"
End Sub
VB
  • ポイント:
    • mail.Attachments.Count で添付の有無を確認。
    • SaveAsFile で指定フォルダに保存。

例題で練習

'例1:最新メールを取得して表示
'例2:受信トレイのメール一覧をシートに展開
'例3:件名に「報告」を含むメールだけ抽出
'例4:添付ファイルを保存
VB

初心者向けポイント

  • Outlook.Applicationを作成して操作 → VBAからOutlookを呼び出す。
  • 受信トレイはGetDefaultFolder(6) → 定番の指定。
  • Itemsでメール一覧を取得 → For Eachでループ可能。
  • 条件抽出や添付保存も簡単 → 実務でよく使うパターン。
  • Excelを「メール管理ツール」として活用できる → 日次報告や添付管理に便利。

👉 この「外部連携 × Outlook連携(受信)テンプレ」を覚えておけば、Excel VBAで Outlookの受信メールをExcelに展開し、一覧化や添付保存を自動化する処理 を簡単に作成できます。

タイトルとURLをコピーしました