Outlookで1通または複数のメールから送信者のメールアドレスを取得するにはどうすればよいですか?
Outlookで受信した1通または複数のメールの「差出人」フィールドからメールアドレスを抽出しようとしたことはありますか?この記事では、このタスクを支援するためのVBAコードを提供します。
Outlookで1通または複数のメールから送信者のメールアドレスを取得する
次のVBAコードを実行して、Outlookで受信した1通または複数のメールの「差出人」フィールドからメールアドレスを抽出してください。
1. メールフォルダを開き、送信者のメールアドレスを取得したいメールを選択します。Alt + F11キーを押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
注意: 複数のメールを選択するには、Ctrlキーを押しながらメールを1つずつ選択してください。
2. Microsoft Visual Basic for Applicationsウィンドウで、挿入 > モジュールをクリックし、次のVBAコードをモジュール(コード)ウィンドウにコピーします。

VBAコード:Outlookで1通または複数のメールから送信者のメールアドレスを抽出する
Sub GetSmtpAddressOfSelectionEmail()
Dim xExplorer As Explorer
Dim xSelection As Selection
Dim xItem As Object
Dim xMail As MailItem
Dim xAddress As String
Dim xFldObj As Object
Dim FilePath As String
Dim xFSO As Scripting.FileSystemObject
On Error Resume Next
Set xExplorer = Application.ActiveExplorer
Set xSelection = xExplorer.Selection
For Each xItem In xSelection
If xItem.Class = olMail Then
Set xMail = xItem
xAddress = xAddress & VBA.vbCrLf & " " & GetSmtpAddress(xMail)
End If
Next
If MsgBox("Sender SMTP Address is: " & xAddress & vbCrLf & vbCrLf & "Do you want to export the address list to a txt file? ", vbYesNo, "Kutools for Outlook") = vbYes Then
Set xFldObj = CreateObject("Shell.Application").BrowseforFolder(0, "Select a Folder", 0, 16)
Set xFSO = New Scripting.FileSystemObject
If xFldObj Is Nothing Then Exit Sub
FilePath = xFldObj.Items.Item.Path & "\Address.txt"
Close #1
Open FilePath For Output As #1
Print #1, "Sender SMTP Address is: " & xAddress
Close #1
Set xFSO = Nothing
Set xFldObj = Nothing
MsgBox "Address list has been exported to:" & FilePath, vbOKOnly + vbInformation, "Kutools for Outlook"
End If
End Sub
Function GetSmtpAddress(Mail As MailItem)
Dim xNameSpace As Outlook.NameSpace
Dim xEntryID As String
Dim xAddressEntry As AddressEntry
Dim PR_SENT_REPRESENTING_ENTRYID As String
Dim PR_SMTP_ADDRESS As String
Dim xExchangeUser As exchangeUser
On Error Resume Next
GetSmtpAddress = ""
Set xNameSpace = Application.Session
If Mail.sender.Type <> "EX" Then
GetSmtpAddress = Mail.sender.Address
Else
PR_SENT_REPRESENTING_ENTRYID = "http://schemas.microsoft.com/mapi/proptag/0x00410102"
xEntryID = Mail.PropertyAccessor.BinaryToString(Mail.PropertyAccessor.GetProperty(PR_SENT_REPRESENTING_ENTRYID))
Set xAddressEntry = xNameSpace.GetAddressEntryFromID(xEntryID)
If xAddressEntry Is Nothing Then Exit Function
If xAddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Or xAddressEntry.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
Set xExchangeUser = xAddressEntry.GetExchangeUser()
If xExchangeUser Is Nothing Then Exit Function
GetSmtpAddress = xExchangeUser.PrimarySmtpAddress
Else
PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
GetSmtpAddress = xAddressEntry.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)
End If
End If
End Function
3. ツール > 参照設定をクリックし、 参照設定 – Project1ダイアログボックスで Microsoft Scripting Runtimeのチェックボックスをオンにします。

4. F5キーを押してコードを実行します。すると、Kutools for Outlookダイアログボックスが表示され、選択されたメールのすべての送信者のメールアドレスがリストアップされます。
注意:

5. はいボタンをクリックすると、フォルダー参照ダイアログボックスが表示されます。ファイルを保存するフォルダーを選択し、OKボタンをクリックしてください。

6. 最後に、Kutools for Outlookダイアログボックスが表示され、エクスポートされたファイルのパスが通知されます。OKをクリックして閉じます。

7. エクスポートされたファイルが保存されているフォルダーに移動し、Addressという名前の.txtファイルを開いて、選択されたメールの送信者のメールアドレスを確認します。

最高のオフィス生産性ツール
速報:Kutools for Outlook が無料版をリリース!
新しくなった Kutools for Outlook を100以上の素晴らしい機能とともに体験してください!今すぐダウンロード!
🤖 Kutools AI : 高度なAI技術を活用し、メールの返信、要約、最適化、拡張、翻訳、作成を効率良くこなします。
📧 メール自動化: 自動返信(POPとIMAPに対応) / メール送信のスケジュール設定 /送信時にルールで自動 CC/BCC / 高度なルールによる自動転送 / 挨拶文を自動追加 / 複数宛先のメールを自動で個別のメールに分割 ...
📨 メール管理: メールの取り消し / 件名やその他の条件で迷惑メールをブロック / 重複したメールの削除 / 高度な検索 / フォルダーを整理 ...
📁 添付ファイルPro: 一括保存 / 一括切り離し / 一括圧縮 / 自動保存 / 自動的に切り離す / 自動圧縮 ...
🌟 インターフェースマジック: 😊もっとキレイで楽しい絵文字 /重要なメールの到着をお知らせ / Outlookを閉じずに最小化 ...
👍 ワンクリック便利機能: 全員に【Attachment】付きで返信 /迷惑メール対策 / 🕘送信者のタイムゾーン表示 ...
👩🏼🤝👩🏻 連絡先&カレンダー: 選択したメールから連絡先を一括追加 /連絡先グループを個別のグループに分割 / 誕生日のリマインダーを削除 ...
お好みの言語で Kutools をご利用いただけます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上をサポート!
Kutools for Outlook はワンクリックですぐにアンロックできます。今すぐダウンロードして効率をアップしましょう!

