外部連携 × Outlook連携(受信)
Excel VBAから Outlookの受信メールを取得 することで、Excelを「メールビューア」や「メール管理ツール」として活用できます。
例えば「受信トレイの最新メールを一覧化」「特定条件のメールだけ抽出」「添付ファイルを保存」などが可能です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Outlook連携の流れ(受信)
- VBAでOutlookアプリケーションを起動
Namespace("MAPI")でメールボックスにアクセスFolders("受信トレイ")からメールを取得- 件名・送信者・本文などを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に展開し、一覧化や添付保存を自動化する処理 を簡単に作成できます。
