【ExcelVBA】Outlookからメールデータを取得してシートに展開する
2023/11/17
質問来ていたのでそれに答えようと思います。
質問内容をざっとまとめるとこんな感じです。
- Outlookの特定のフォルダにメールが保存されている
- マクロでフォルダを指定して、そのフォルダ内の全てのメールにアクセス。
- メール本文から情報(メールアドレス、氏名、など)を抽出してExcelに転記
- マクロはOutlook側・Excel側どちらでも構わない。
今回はExcelマクロからOutlookの特定フォルダにアクセスしてメールをゲットしたいと思います。上記の依頼のうち本文解析はプログラムを複雑にしてしまうので次の機会にします。まずはOutlookからメールデータを取得する部分を紹介します。
完成形を動画にしてみました。今回の動きはこんな感じです。
Outlook側の確認です。赤枠の部分に注目。まずはアカウント(メールアドレス)があり、その下に独自に作成したフォルダがあります(今回は「未決」というフォルダ名にしました)。「未決」フォルダの中にメールが保存されています。
ソースコードはこちら。未決フォルダ内のメールを読み込んでExcelシートに各情報が展開されます。
Sub getOutlookMail()
Dim r, idx As Long
Set myapp = CreateObject("Outlook.Application")
Set myFolder = myapp.Session.Folders("xxxxx@outlook.jp").Folders("未決")
Range("A2:D1000").ClearContents
r = 2
For idx = myFolder.Items.Count To 1 Step -1
Cells(r, 1).Value = myFolder.Items(idx).Subject
Cells(r, 2).Value = myFolder.Items(idx).SenderName
Cells(r, 3).Value = myFolder.Items(idx).SenderEmailAddress
Cells(r, 4).Value = myFolder.Items(idx).ReceivedTime
r = r + 1
Next
End Sub
今日はここまで。次回はメール本文内を解析してExcelシートに表示させたいと思います。
スポンサーリンク
