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


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


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

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 と連携中