前回の記事で久しぶりにOutlookのマクロを触りましたが、ついでに昔書いたマクロが掘り起こされたので、関連資料のリンク含めて記事として書き残しておきます。
通常、メールの件名や本文といった情報を取得したい場合は、SubjectやBodyといったプロパティを使用しますが、PropertyAccessorオブジェクトを使用することでMAPIのプロパティにアクセスし、Outlookオブジェクトモデルとして公開されていないプロパティの情報も取得・設定することができます。
値を取得する具体的なコードは下記の通りで、(PropertyAccessor).GetPropertyメソッドでプロパティを指定しています(ここで指定している名前空間については下記ページ参照)。
Public Sub Sample() With ActiveExplorer.Selection.Item(1) 'Outlook.MailItem 'ロケールID取得(PR_MESSAGE_LOCALE_ID) Debug.Print .PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3FF10003") '添付ファイルの拡張子取得(PR_ATTACH_EXTENSION_W) If .Attachments.Count > 0 Then With .Attachments.Item(1) 'Outlook.Attachment Debug.Print .PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3703001F") End With End If End With End Sub
MAPIプロパティIDは下記サイトでも調べることができますが、量が膨大なため、個人的には「MFCMAPI」を使って調べることをお薦めします。
MFCMAPIについては下記サイトの説明が分かりやすいかと思います。
MFCMAPIは、以前はCodePlexで公開されていましたが、現在はGitHubで最新版が公開されているので、下記ページからダウンロードしてください。
同様のツールとして「OutlookSpy」がありますが、こちらはシェアウェアなので私は使ったことが有りません。
今回はあまり詳しく解説しませんでしたが、PropertyAccessorオブジェクト経由で色んなプロパティにアクセスできることを覚えておくと、Outlookマクロを書くときに役立つでしょう。
また、取得したプロパティの値の意味を調べる際、ヘッダーファイルを手元に置いておくと便利だと思います。
この記事へのコメントはありません。