Outlook VBAで送信者のメールアドレスを取得する方法

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、こんにちは。今日は、OutlookのVBAを使って、受信メールの送信者のメールアドレスを取得する方法についてお話しします。普段、Outlookを使っていて、「このメール、誰から来たんだろう?」と気になること、ありますよね。そんな時に役立つのが、VBAを使ったメールアドレスの取得方法です。初心者の方にもわかりやすく解説していきますので、ぜひ最後までご覧ください。

スポンサーリンク

Outlook VBAとは?

Outlookのイメージ

Outlookのイメージ

まず、VBAについて簡単にご説明します。VBAは「Visual Basic for Applications」の略で、Microsoftのアプリケーションを自動化するためのプログラミング言語です。ExcelやWord、そして今回のテーマであるOutlookでも使用できます。VBAを使うことで、手作業で行っていた処理を自動化し、作業効率を大幅にアップさせることができます。

送信者のメールアドレスを取得する方法

それでは、本題の送信者のメールアドレスを取得する方法について見ていきましょう。OutlookのVBAを使ってメールの送信者アドレスを取得するには、以下の手順を踏みます。

  1. OutlookのVBAエディターを開く。
  2. 新しいモジュールを作成する。
  3. メールアイテムから送信者のメールアドレスを取得するコードを記述する。
  4. コードを実行して、送信者のメールアドレスを取得する。

具体的なコードの例を以下に示します。

vba
' 送信者のメールアドレスを取得する関数
Private Function GetSenderEmailAddress(ByRef oItem As MailItem) As String
Dim PR_SMTP_ADDRESS As String
Dim oSender As AddressEntry
Dim oExUser As ExchangeUser

PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"

' Exchange以外の場合
If oItem.SenderEmailType <> "EX" Then
GetSenderEmailAddress = oItem.SenderEmailAddress
Exit Function
End If

Set oSender = oItem.Sender

If oSender.AddressEntryUserType = olExchangeUserAddressEntry Or oSender.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
Set oExUser = oSender.GetExchangeUser
GetSenderEmailAddress = oExUser.PrimarySmtpAddress
Exit Function
End If

GetSenderEmailAddress = oSender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)
End Function

このコードは、指定したメールアイテムから送信者のメールアドレスを取得する関数です。特に、Exchangeを使用している場合、送信者のメールアドレスの形式が異なることがあります。その場合でも正確にメールアドレスを取得できるように工夫されています。

実際の使用例

では、具体的にどのようにこの関数を使用するのか見てみましょう。例えば、受信トレイ内の全てのメールの送信者アドレスを取得して、イミディエイトウィンドウに表示する場合、以下のようなコードを記述します。

vba
Public Sub ListSenderEmailAddresses()
Dim oNs As NameSpace
Dim oFolder As Folder
Dim oItem As Object
Dim oMailItem As MailItem

Set oNs = Application.GetNamespace("MAPI")
Set oFolder = oNs.GetDefaultFolder(olFolderInbox)

For Each oItem In oFolder.Items
If TypeName(oItem) = "MailItem" Then
Set oMailItem = oItem
Debug.Print GetSenderEmailAddress(oMailItem)
End If
Next
End Sub

このコードを実行すると、受信トレイ内の全てのメールの送信者アドレスがイミディエイトウィンドウに表示されます。これを応用すれば、特定の条件に合致するメールの送信者アドレスをリストアップすることも可能です。

よくある質問や疑問

Q1: VBAを使ったことがないのですが、難しくないですか?

A1: 最初は少し戸惑うかもしれませんが、基本的な構文を覚えれば、簡単なマクロを作成することができます。今回のコードもコピー&ペーストで試してみることができますので、ぜひチャレンジしてみてください。

Q2: この方法は全てのOutlookバージョンで使えますか?

A2: 基本的には、Outlook 2010以降のバージョンで使用可能です。ただし、環境によっては一部のプロパティやメソッドが使用できない場合がありますので、その際はMicrosoftの公式ドキュメントを参照してください。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

今回は、OutlookのVBAを使って送信者のメールアドレスを取得する方法をご紹介しました。VBAを活用することで、日々の業務を効率化することができます。最初は難しく感じるかもしれませんが、少しずつ慣れていけば、さまざまな自動化が可能になります。ぜひ、この機会にVBAに触れてみてください。

他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました