アドレス帳から任意のプロパティを取得する方法


コメントにて以下のようなご要望をいただきました。


Outlook2007で、グローバルアドレス帳をExcelシートに エクスポートするマクロを作成しています。 .AddressLists、.AddressEntries、.GetAddressEntryFromID、 .GetExchangeUserを用いて、ほぼ全ての項目を取得できましたが、 項目「メモ」に記載されている内容を取得できません。もし取得方法をご存じでしたら、ご教授いただけると大変助かります。よろしくお願いします。


アドレス帳の「メモ」に記載されている情報は、Recipient オブジェクトの AddressEntry の ProcessAccessor.GetProperty で SchemeName として "http://schemas.microsoft.com/mapi/proptag/0x3004001e" を指定すると取得が可能です。
たとえば、oRec という変数に名前解決されたグローバル アドレス帳のエントリーの一つが保存されている場合、このエントリーのメモを取得する場合は以下のようになります。

 strMemo = oRec.AddressEntry.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3004001e")

アドレス帳に格納されているほとんどのプロパティが同様の方法で取得可能です。
では、どうやってこのようなプロパティの SchemaName を見つければよいかについて説明しましょう。

以下のページにアドレス帳のフィールドのプロパティ タグの一覧があります。

_Application.AddAddress メソッド

まず、この表から取得したいプロパティのプロパティ タグを探します。
今回の「メモ」の場合、表では PR_COMMENT となっています。

次に PR_COMMENT のタグ ID を探します。
この時役立つのは mrmapi というプログラムです。

mrmapi は MFCMAPI というツールに含まれるコマンドライン プログラムで、以下の URL より入手が可能です。

http://mfcmapi.codeplex.com/

このページの右の [download] というボタンをクリックし、zip ファイルをダウンロードすると、その中に mrmapi.exe というプログラムがあります。
そして、コマンドライン プロンプトで mrmapi PR_COMMENT と実行すると、以下のように出力されます。

0x3004001E,PR_COMMENT,PT_STRING8
(以下略)

この最初の 16 進数を "http://schemas.microsoft.com/mapi/proptag/" の後ろにつけると、GetProperty の SchemeName となります。

なお、この MFCMAPI は Microsoft 社の Stephen Griffin 氏が開発しているオープン ソースのツールです。

広告

アドレス帳から任意のプロパティを取得する方法」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中