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 2013 アイコン一覧(NUM)

    ・Office 2013 アイコン一覧 NUM…

  2. Office アドイン

    [Office用アプリ]カレンダーから日付を入力するコンテンツアプリ。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  3. Office関連

    「VBA質問箱」にアクセスできない。

    2013/03/19 追記:ドメインが更新されVBA質問箱が閲覧で…

  4. Office関連

    Presentation Translatorが公開されました。

    下記記事で紹介している「Microsoft Translator アド…

  5. Office関連

    「印刷の向き」の変更を検知するExcelマクロ

    MSDNフォーラムに「「印刷の向き」の「縦」「横」ボタンがクリックされ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP