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関連

    Excel 2016でUTF-8のCSVファイルがサポートされるようになりました。

    Office 2016の10月の機能更新によって、ExcelでUTF-…

  2. Office関連

    Chromeアプリ版Office Onlineを使ってみました。

    「Microsoft、GoogleのChromeアプリ版Office …

  3. Office関連

    SmartArtからテキストを取得するPowerPointマクロ

    Twitterで@terrysaitoさんが下記のようなツイートをされ…

  4. Office関連

    Excelを使わずにCSVからExcelファイルに変換するPowerShellコード

    CSVファイルからExcelファイルに変換する処理を自動化したい、Ex…

  5. Excel

    【2017年7月版】ポータブル デバイスからファイルをコピーするVBAマクロ

    4年ほど前に、PCに接続したスマートフォン等のWindows ポータブ…

  6. Office関連

    PowerShellからClosedXMLを使ってExcelファイルを作成する方法

    以前C#からClosedXMLを使ってExcelファイルを操作する方法…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP