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

    2つの文書を比較するWordマクロ

    先日テキスト比較ソフトの「ちゃうちゃう!」がバージョンアップされたこと…

  2. Office関連

    フッターにページ番号と総ページ数を挿入するWordマクロ

    以前書いた、フッターに「ページ番号 / 総ページ数」を挿入するWord…

  3. Office関連

    選択範囲をOneNoteに送るVBAマクロ

    OneNote プリンタードライバー(プリンター)を使ってドキュメント…

  4. Office アドイン

    [Officeアドイン]図形挿入アドイン

    最近まほうのルミティアとかプリキュア、オトカドールの記事ばかり書くこと…

  5. Office関連

    WordBasicマクロの資料

    Word 97でVBA機能が搭載される以前のWordでは、WordBa…

  6. Office関連

    Wordマクロで文字数を取得する方法をまとめてみました。

    「蛍光ペンでマークした部分の文字数をカウントするWordマクロ」で蛍光…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP