Outlook(Microsoft 365)でメールを送信する時に、メールの宛先(CC、BCC)誤りを減らすためのマクロです。
送信ボタンを押したときに、送信先情報(送信先の表示名、メールアドレス)をダイアログで表示します。
送信先の表示名のみを表示する
ダイアログイメージ

ソースコード
Option Explicit
'Microsoft Outlook Objects > ThisOutlookSession に貼り付ける
'マクロのセキュリティ
' - 下記のどちらかを選択する
' - すべてのマクロに対して警告を表示する
' - すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります)
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim toList As Variant
Dim ccList As Variant
Dim bccList As Variant
Dim msg As String
toList = Item.To
ccList = Item.CC
bccList = Item.BCC
toList = Split(toList, ";")
ccList = Split(ccList, ";")
bccList = Split(bccList, ";")
msg = "下記の宛先(CC,BCC)にメールを送信します。よろしいですか?" & vbCrLf & vbCrLf
Dim i As Integer
msg = msg & "【宛先】" & vbCrLf
For i = 0 To UBound(toList)
msg = msg & " [" & i + 1 & "] " & Trim(toList(i)) & vbCrLf
Next i
msg = msg & "【CC】" & vbCrLf
For i = 0 To UBound(ccList)
msg = msg & " [" & i + 1 & "] " & Trim(ccList(i)) & vbCrLf
Next i
msg = msg & "【BCC】" & vbCrLf
For i = 0 To UBound(bccList)
msg = msg & " [" & i + 1 & "] " & Trim(bccList(i)) & vbCrLf
Next i
If MsgBox(msg, vbYesNo + vbExclamation, "送信先確認") = vbNo Then
Cancel = True
Exit Sub
End If
Set Item = Nothing
End Sub
送信先の表示名とメールアドレスを表示する
ダイアログイメージ

ソースコード
Option Explicit
'Microsoft Outlook Objects > ThisOutlookSession に貼り付ける
'マクロのセキュリティ
' - 下記のどちらかを選択する
' - すべてのマクロに対して警告を表示する
' - すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります)
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim toList As Variant
Dim ccList As Variant
Dim bccList As Variant
Dim toCcBccArray() As Variant
Dim titleArray() As Variant
Dim propAccessor As Variant
Dim rcp As Recipient
Dim name As String
Dim msg As String
titleArray = Array("【宛先】", "【CC】", "【BCC】")
msg = "下記の宛先(CC,BCC)にメールを送信します。よろしいですか?" & vbCrLf & vbCrLf
For Each rcp In Item.Recipients
Set propAccessor = rcp.PropertyAccessor
With rcp
name = .name & " <" & propAccessor.GetProperty(PR_SMTP_ADDRESS) & ">"
If .Type = olTo Then
toList = toList & name & ";"
ElseIf .Type = olCC Then
ccList = ccList & name & ";"
Else
bccList = bccList & name & ";"
End If
End With
Next
toCcBccArray = Array(toList, ccList, bccList)
Dim i As Integer
For i = 0 To UBound(toCcBccArray)
If Len(toCcBccArray(i)) = 0 Then toCcBccArray(i) = ";"
toCcBccArray(i) = Split(Left(toCcBccArray(i), Len(toCcBccArray(i)) - 1), ";")
Next i
Dim j As Integer
For i = 0 To UBound(toCcBccArray)
msg = msg & titleArray(i) & vbCrLf
For j = 0 To UBound(toCcBccArray(i))
msg = msg & " [" & j + 1 & "] " & Trim(toCcBccArray(i)(j)) & vbCrLf
Next j
Next i
If MsgBox(msg, vbYesNo + vbExclamation, "送信先確認") = vbNo Then
Cancel = True
Exit Sub
End If
Set Item = Nothing
Set propAccessor = Nothing
End Sub