outlook メール送信時にマクロで差出人と既定のアカウント以外の差出人を取得する

  • 作成日 2023.01.01
  • vba
outlook メール送信時にマクロで差出人と既定のアカウント以外の差出人を取得する

outlookで、「Session.CurrentUser.Address」で差出人を取得しようとすると差出人を変更しても規定のアカウントの差出人が取得されるので、既定のアカウント以外の差出人を取得する手順を記述してます。

環境

  • OS windows11 pro

送信時に差出人を取得

以下のように、差出人を複数選択できるような場合は、差出人を変更しても「Session.CurrentUser.Address」で差出人を取得しても既定のアカウント以外の差出人は取得されません。

送信時に既定のアカウント以外の差出人も含む、現在選択されているアカウントを取得するには、

「SendUsingAccount」で現在選択されている差出人を取得することで、差出人が変更されていてもアドレスを取得することができます。

Option Explicit

' 送信ボタンイベント
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

On Error GoTo Exception
  
  Dim fromAddress As String ' 差出人アドレス取得用

  If Item.SendUsingAccount Is Nothing Then
  
    ' 規定でなければ空を挿入
    fromAddress = ""  
  
  Else
  
    ' 規定のアドレス以外
    fromAddress = Item.SendUsingAccount
    
  End If

 ' 規定のアドレスが使用されていれば、既定のアカウントを取得する
  If fromAddress = "" Then
    fromAddress = Item.Session.CurrentUser.Address '差出人を取得して
  End If

Exception:
    MsgBox CStr(Err.Number) & ":" & Err.Description, vbOKOnly + vbCritical
    Cancel = True
    Exit Sub
    GoTo EXIT_SECTION

EXIT_SECTION:
  
End Sub