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 アドイン

    Office用アプリではalertやconfirmが使えない?

    JavaScriptでメッセージや確認ダイアログを表示する際には「al…

  2. Office関連

    Excelで地理データや株価情報を取得する方法

    下記記事にある、今年3月に追加された「データの種類」機能を使って、Ex…

  3. Office アドイン

    [Office用アプリ]Google ドライブでアプリを公開する方法

    今回は先日登壇した第一回 Apps for Office 勉強会の中で…

  4. Office関連

    Office 2016でACROBATタブが表示されない!?(Acrobat DC)

    2015/10/16 追記:先日公開されたアップデート「15.00…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP