SugiBlog Webエンジニアのためのお役立ちTips

Outlookメッセージファイル(.msg)からデータを取り出す – VBA

この記事は最終更新日から1年以上経過しています。

Outlookのメッセージファイル(.msg)から送信元アドレスや件名、本文等のデータを取り出すことができます。
よくあるのは、受信トレイのメールからデータを取り出したりしますが、今回は任意の場所にコピーしたメッセージファイル(.msg)からデータを取り出す方法をご紹介します。

まずは宣言

Dim OL  As Object
Dim msg As Object

Outlookオブジェクトを生成

Set OL = CreateObject("Outlook.Application")

msgファイルを指定

strFileName = "c:\sample.msg"

メッセージファイルをオブジェクトに読み込む

Set msg = OL.CreateItemFromTemplate(strFileName)

各種データを取得します。

Debug.Print "SentOnBehalfOfName: " & msg.SentOnBehalfOfName
Debug.Print "SenderName: " & msg.SenderName
Debug.Print "ReceivedByName: " & msg.ReceivedByName
Debug.Print "ReceivedOnBehalfOfName: " & msg.ReceivedOnBehalfOfName
Debug.Print "ReplyRecipientNames: " & msg.ReplyRecipientNames
Debug.Print "To: " & msg.To
Debug.Print "CC: " & msg.CC
Debug.Print "BCC: " & msg.Bcc
Debug.Print "Subject: " & msg.Subject
Debug.Print "Body: " & msg.Body
Debug.Print "HTMLBody: " & msg.HTMLBody
'Debug.Print "Recipients: " & msg.Recipients
Debug.Print "SenderEmailAddress: " & msg.SenderEmailAddress

プロパティについてはMSDNを参照しましたが、Recipientsはプロパティが存在しないとエラーが発生したのでスキップしています。

オブジェクトの解放

Set msg = Nothing
Set OL = Nothing

結果は以下のように出力されます。

SentOnBehalfOfName: sender@example.jp
SenderName: sender@example.jp
ReceivedByName: 
ReceivedOnBehalfOfName: 
ReplyRecipientNames: sender@example.jp
To: to@example.jp
CC: 
BCC: 
Subject: 件名
Body: 本文

HTMLBody: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META NAME="Generator" CONTENT="MS Exchange Server version 14.02.5004.000">
<TITLE></TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P>本文</P>

</BODY>
</HTML>

SenderEmailAddress: sender@example.jp

参考URL:
http://msdn.microsoft.com/en-us/library/office/aa210946(v=office.11).aspx
http://msdn.microsoft.com/en-us/library/office/ff861332(v=office.15).aspx

この記事がお役に立ちましたらシェアお願いします
71,226 views

コメントは受け付けていません。