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

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

【ExcelVBA】Outlookからメールデータを取得してシートに展開する(本文展開)

   

前回、Excelマクロ(VBA)でOutlookからメールデータを取得してシートに展開する方法について書きました。今回はメール本文の中を取得して定型文から必要情報を抽出したいと思います。

 

こちらがOutlookの様子ですが、「未決」フォルダ内にメールが保存されていて、それぞれ名前や年齢などが定型文で書かれています。

 

こちらがソースコードです。

Sub getOutlookMail()

   Set myapp = CreateObject("Outlook.Application")
   Set i_Folder = myapp.Session.GetDefaultFolder(6)
   Set myFolder = myapp.Session.Folders("xxxxx@outlook.jp").Folders("未決")

   Range("A2:G1000").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
      Cells(r, 5).Value = getInfo(myFolder.Items(idx).body, "【名前】")
      Cells(r, 6).Value = getInfo(myFolder.Items(idx).body, "【年齢】")
      Cells(r, 7).Value = getInfo(myFolder.Items(idx).body, "【住所】")
      r = r + 1
   Next
End Sub

Function getInfo(mailbody As String, keyword As String) As String
   Dim textline As Variant
   textline = Split(mailbody, vbCrLf)
   
   getInfo = ""
   For i = 0 To UBound(textline)
      If InStr(textline(i), keyword) > 0 Then
         getInfo = Replace(textline(i), keyword, "")
         Exit Function
      End If
   Next
End Function
 

 

実行結果は以下の動画の通りです。

 

スポンサーリンク

 - Excel, Outlook, VBA