Office関連

メールアドレスからExchangeUserを取得するOutlookマクロ

moug“メールアドレスをキーとしてExchangeグローバルアドレス一覧を検索し、名前や部署名を取得したい”との質問(https://www.moug.net/faq/viewtopic.php?t=78288)がありました。

その回答用に書いたのが以下のコードで、mougのログが流れてしまう前にメモとして残しておきます。

2019/6/19 追記:
いみひと(@nukie_53)さんから返信をいただいてコードを一部変更。
関数名は「By」の方が分かりやすそう!ついでにAddressEntryUserTypeの判定処理も変更。

Public Sub Sample()
  Dim eu As Outlook.ExchangeUser
   
  Set eu = GetExchangeUserByAddress("hoge@hogepomehoge.onmicrosoft.com")
  If Not eu Is Nothing Then
    Debug.Print eu.Name, eu.Department, eu.PrimarySmtpAddress
  End If
End Sub
 
Private Function GetExchangeUserByAddress(ByVal SmtpAddress As String) As Outlook.ExchangeUser
  Dim myList As Outlook.AddressList
  Dim ae As Outlook.AddressEntry
  Dim eu As Outlook.ExchangeUser
  Dim ret As Outlook.ExchangeUser
   
  Set myList = Application.Session.GetGlobalAddressList
  For Each ae In myList.AddressEntries
    Select Case ae.AddressEntryUserType
      Case olExchangeUserAddressEntry, olExchangeRemoteUserAddressEntry '環境に応じて変更
        Set eu = ae.GetExchangeUser
        If eu.PrimarySmtpAddress = SmtpAddress Then
          Set ret = eu
          Exit For
        End If
    End Select
  Next
  Set GetExchangeUserByAddress = ret
End Function

処理の流れは下記の通りです。

  1. GetGlobalAddressListメソッドでグローバルアドレス一覧を表すAddressListオブジェクトを取得。
  2. AddressEntriesプロパティからAddressEntries(コレクション)オブジェクトを取得。
  3. For Each文で順次AddressEntryオブジェクトを取得。
  4. AddressEntryUserTypeプロパティによる判定。
  5. GetExchangeUserメソッドでExchangeUserオブジェクトを取得。
  6. PrimarySmtpAddressプロパティが指定したメールアドレスかどうかを判断。
  7. 一致した場合ExchangeUserオブジェクトを返す。

【アイカツフレンズ!】かがやきのジュエル2弾はじめました。前のページ

名前空間を指定してXPathで要素を取得するVBAマクロ次のページ

関連記事

  1. Excel

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

  2. VBScript

    msgファイルから添付ファイルを抽出するVBScript

    「msgファイルから添付ファイルを抽出するスクリプト」といったキーワー…

  3. Office関連

    徹底的にSymbol(シンボル)フォントをチェックするWordマクロ

    文字列をメモ帳にコピー&ペーストすると文字化けしたり、フォント指定で検…

  4. Office関連

    オデッセイ コミュニケーションズ主催のExcel VBA入門セミナーに参加しました。

    今月19日に開催されたオデッセイ コミュニケーションズさん主催の「Ex…

  5. Office アドイン

    [Office用アプリ]Seller Dashboardの不満点

    当ブログでも散々取り上げていますが、ストア登録の申請含めて、Offic…

  6. Office関連

    [OneNote]クリップボードから新しいページに貼り付け

    何かをメモするとき、ファイルを保存するとき等々、私はよくOneNote…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP