非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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シートに表示させたいと思います。

 

スポンサーリンク

 - Excel, Outlook, VBA