Outlook階層型アドレス帳や、Global Address Listについてはコピペでメールアドレス一覧を取得することは出来ません。
直感的に出来ないので諦めてしまっている方は多いと思いますが、Excelマクロを使用することで簡単に一覧を取得することが出来ます。
本記事では、マクロコード込みで詳細な手順を記載していきます。
出来るようになること | Outlookからメールアドレスの一覧を取得出来る |
必要レベル | ExcelマクロのVBE画面を表示出来る |
動作確認環境 | Windows11/365 Apps for business(Outlook/Excel 2403) |
いいね数 | |
やりたいこと
最初に、やりたいことについて説明しておきます。
上記の「Offline Global Address List」の一覧を全て取得し、Excelに一覧を転記したい。というのがやりたいことです。
対象部署のみを指定したい場合は、Excelへ転記後にフィルター等で必要データのみを抽出してください。
マクロ付Excelファイルを使用する方はこちら
マクロ付Excelファイルをダウンロードして使用できる方はこちらをご参照ください。セキュリティ等で使用できない方は、「マクロ無Excelファイルを使用する方はこちら」をご参照ください。
特別な操作ではなく、いつも通りOutlookを起動させておいてください。
今回は、こちらでも使用しているExcelを元にして使います。ダウンロードし、ファイルを開いてください。
開いたExcelファイルの「アドレス帳一覧取得」ボタンをクリックしてください。エラーが無ければ、一覧を取得できます。
マクロ無Excelファイルを使用する方はこちら
インターネット上からダウンロードしたExcelファイルでは、セキュリティによりマクロを動かせない場合があります。
マクロ無のExcelファイルをダウンロードし、マクロコードをVBEにコピペして実行する方法については、こちらをご参照ください。
特別な操作ではなく、いつも通りOutlookを起動させておいてください。
今回は、こちらでも使用しているExcelを元にして使います。ダウンロードし、ファイルを開いてください。
以下のコードを新規で作成した標準モジュールにコピペしてください。
コピーしました!
Sub アドレス帳からアドレス一覧を取得する処理()
Dim myNameSpace As Outlook.Namespace
Dim myAddressList As Outlook.AddressList
Dim myAddressEntries As Outlook.AddressEntries
Dim myApplication As Outlook.Application: Set myApplication = Outlook.Application
Set myNameSpace = myApplication.GetNamespace("MAPI")
Set myAddressList = myNameSpace.AddressLists("Offline Global Address List")
Set myAddressEntries = myAddressList.AddressEntries
' テーブルのデータ部のみを初期化する
Dim ws As Worksheet: Set ws = ActiveSheet
Dim tbl As ListObject: Set tbl = ws.ListObjects("テーブル1")
If tbl.ListRows.Count <> 0 Then tbl.DataBodyRange.Delete xlUp
' ユーザー数分転記する
Dim lastRow As Long, cntUser As Long
Dim l As AddressEntry
Dim oExUser As ExchangeUser
For Each l In myAddressEntries
Set oExUser = l.GetExchangeUser
If Not oExUser Is Nothing Then
' テーブルの最下行を取得する
Set tbl = ws.ListObjects("テーブル1")
lastRow = tbl.ListRows.Count + 2
ws.Cells(lastRow, 1) = oExUser.PrimarySmtpAddress 'メールアドレス
ws.Cells(lastRow, 2) = oExUser.Name '氏名
ws.Cells(lastRow, 3) = oExUser.CompanyName '社名
ws.Cells(lastRow, 4) = oExUser.Department '部署
ws.Cells(lastRow, 5) = oExUser.OfficeLocation '事業所
ws.Cells(lastRow, 6) = oExUser.JobTitle '役職
cntUser = cntUser + 1
End If
Next
MsgBox "取得が完了しました" & vbCrLf & _
"ユーザー数:" & cntUser, vbInformation
End Sub
VBE画面にて、ツール⇒参照設定をクリックします。
[Microsoft Outlook xx.x Object Library]にチェックを入れ、OKをクリックします。これで、Outlookのライブラリを追加することが出来ます。
F5キーもしくは、画面上の[実行]からマクロを実行してみてください。エラーが無ければ、一覧を取得できます。
まとめ
この作業を利用者側で出来ることにより、組織の管理者に一覧の送付をお願いする手間が省けます。
本記事が、見ていただいた方および、管理者の方の助けになれば幸いです。
- でじらぼ 様
いつも大変参考になる情報をありがとうございます。
この記事は参考になりましたか?