Office関連

[Outlook VBA]Outlookオブジェクトモデルとして公開されていないプロパティにアクセスする方法

前回の記事で久しぶりに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マクロを書くときに役立つでしょう。

また、取得したプロパティの値の意味を調べる際、ヘッダーファイルを手元に置いておくと便利だと思います。

メールを閉じたときに指定したフォルダに移動するOutlookマクロ前のページ

2021年4月の人気記事次のページ

関連記事

  1. Office関連

    Chrome DevTools ProtocolでEdgeを操作するVBAマクロ

    Microsoft Edgeの操作を自動化する際はWebDriverを…

  2. Office関連

    Office 2013 オンラインヘルプのリンクを集めてみました。

    新機能を把握するためにはヘルプを見るのが一番早い、というわけでOffi…

  3. アイコン一覧

    Office 2013 アイコン一覧(H)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    「EXCEL VBA 業務自動化 仕事の効率を劇的に上げるノウハウ」レビュー

    ※ 下記レビューはあくまでも個人的な感想です。2015年4…

  5. Office関連

    起動中のMicrosoft EdgeからタイトルとURLを取得するVBAマクロ(DOM編)

    前回の記事で、UI Automationを使って起動中のMicroso…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

最近の記事

アーカイブ

PAGE TOP