皆さん、こんにちは。今日は、OutlookでVBAを使ってメールの送信者のアドレスを取得する方法についてお話しします。パソコンやスマホがちょっと苦手な方でも大丈夫です。ゆっくり一緒に学んでいきましょう。
Outlook VBAとは?
まず、Outlook VBAについて簡単に説明しますね。VBAは「Visual Basic for Applications」の略で、OutlookなどのMicrosoft Office製品を自動化するためのプログラミング言語です。これを使うと、手作業で行っていた繰り返しの作業を自動化できるんですよ。
送信者のメールアドレスを取得する基本的な方法
Outlookで受信したメールの送信者のアドレスを取得するには、VBAで以下のように記述します。
vba
Dim mail As Outlook.MailItem
Dim senderAddress As String
Set mail = Application.ActiveInspector.CurrentItem
senderAddress = mail.SenderEmailAddress
MsgBox senderAddress
このコードでは、現在開いているメールの送信者アドレスを表示します。`SenderEmailAddress`プロパティを使うことで、送信者のメールアドレスを取得できます。
Exchange環境での注意点
ただし、会社などでExchangeサーバーを使っている場合、`SenderEmailAddress`プロパティが期待した形式のアドレスを返さないことがあります。例えば、`/O=EXAMPLE/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=USER`のような形式です。
このような場合、以下のようにしてSMTP形式のアドレスを取得できます。
vba
Dim mail As Outlook.MailItem
Dim senderAddress As String
Set mail = Application.ActiveInspector.CurrentItem
If mail.SenderEmailType = "EX" Then
Dim sender As Outlook.AddressEntry
Set sender = mail.Sender
If sender.AddressEntryUserType = olExchangeUserAddressEntry Or sender.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
Dim exchUser As Outlook.ExchangeUser
Set exchUser = sender.GetExchangeUser()
If Not exchUser Is Nothing Then
senderAddress = exchUser.PrimarySmtpAddress
End If
End If
Else
senderAddress = mail.SenderEmailAddress
End If
MsgBox senderAddress
このコードでは、送信者がExchangeユーザーの場合、`PrimarySmtpAddress`プロパティを使って正しいメールアドレスを取得しています。
実際の活用例
例えば、特定の送信者からのメールに自動でフラグを付けたい場合、以下のようにコードを応用できます。
vba
Sub FlagSpecificSender()
Dim inbox As Outlook.Folder
Dim mail As Outlook.MailItem
Dim i As Integer
Set inbox = Application.Session.GetDefaultFolder(olFolderInbox)
For i = inbox.Items.Count To 1 Step -1
If TypeOf inbox.Items(i) Is Outlook.MailItem Then
Set mail = inbox.Items(i)
If mail.SenderEmailAddress = "[email protected]" Then
mail.FlagIcon = olYellowFlagIcon
mail.Save
End If
End If
Next i
End Sub
このコードでは、受信トレイ内のメールをチェックし、特定のアドレスからのメールに黄色のフラグを付けています。
よくある質問や疑問
Q1: VBAを使うのは初めてですが、どこでコードを入力すればいいですか?
心配いりません。OutlookでVBAコードを入力するには、以下の手順を試してみてください。
- Outlookを開きます。
- キーボードの「Alt」キーを押しながら「F11」キーを押して、VBAエディターを開きます。
- 左側のプロジェクトエクスプローラーで「ThisOutlookSession」をダブルクリックします。
- 右側のコードウィンドウに、先ほどのコードを貼り付けます。
- 貼り付けたコード内の特定のメールアドレス(例: [email protected])を、実際に使用したいアドレスに置き換えてください。
- コードを保存して、VBAエディターを閉じます。
これで、Outlookで特定の送信者からのメールに自動でフラグを付けるマクロが設定されました。
Q2: このコードはどのバージョンのOutlookで使えますか?
このコードは、Microsoft Outlook 2010以降のバージョンで動作します。ただし、環境によっては一部のプロパティやメソッドが異なる場合がありますので、ご自身のOutlookバージョンに合わせて調整してください。
まとめ
いかがでしたか?OutlookでVBAを使って送信者のメールアドレスを取得する方法をご紹介しました。最初は難しく感じるかもしれませんが、慣れてくるととても便利に使えますよ。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。



コメント