連絡先グループのメンバーの部署を取得する


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


いつも参考にさせていただいております。

OS:Windows7にてOutlook2010を利用し、Exchange環境で利用しております。
ご送信防止のため、送信時の宛先を判定しExchangeUserの場合、特定の部署のみ送信可能とするマクロを作成しております。

単体のExchangeUserの場合、RecipentよりAddressEntery.GetExchangeUserにて部署情報を取得できますが、「連絡先グループ」にてExchangeUserをグループ登録している場合、Outlook.Distlistitem.GetMemberでRecipent情報は取得できるのでですが、部署が取得できません。

ご教授いただけると助かります。よろしくお願いいたします。



連絡先グループに追加されたメンバーを Recipient オブジェクトとして取得すると、メールアドレスが LegacyExchangeDN ではなく、SMTP アドレスとなっています。
このような場合、Exchange のアドレス帳からは切り離された状態となっているため、部署情報が取得できません。
したがって、アドレスから再び名前解決を実行し、名前解決後の Recipient オブジェクトから ExchangeUser を取得することで、部署などの情報が取得できます。
指定した連絡先グループに含まれるメンバーの部署をイミディエイト ウィンドウに表示するマクロのサンプルは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub CheckDepartmentInContactGroup(distList As DistListItem)
    On Error Resume Next
    Dim i As Integer
    Dim recMember As Recipient
    Dim recResolve As Recipient
    Dim objExchUser As ExchangeUser
    '
    For i = 1 To distList.MemberCount
        Set recMember = distList.GetMember(i)
        ' 名前解決用のオブジェクト生成
        Set recResolve = Session.CreateRecipient(recMember.Address)
        ' 名前解決を改めて実行
        recResolve.Resolve
        ' 名前解決後のオブジェクトから Exchange ユーザーを取得
        Set objExchUser = recResolve.AddressEntry.GetExchangeUser()
        If Not objExchUser Is Nothing Then
            Debug.Print objExchUser.Name, objExchUser.Department
        End If
    Next
End Sub

マクロの登録方法やメニューへの追加について

連絡先グループのメンバーの部署を取得する」への1件のフィードバック

  1. ありがとうございます。解決できました。
    OUTLOOKのVBAについては他のサイトを探しても情報が少なく大変助かりました。

    やはりExchange のアドレス帳から切り離された状態となっていたのですね。
    ご教授いただいたとおりアドレスから名前解決を実行し、ExchangeUser を取得できました。

    ありがとうございました。今後ともよろしくお願いいたします。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中