outlook マクロで送信前にアドレスチェックを行う
outlookで、マクロで送信前にアドレスチェックを行う手順を記述してます。
環境
- OS windows11 pro
アドレスチェックを行う
アドレスチェックを行うには、「ThisOutlookSession」に、
以下のコードを追加します。
Option Explicit
' MAPI プロパティ
Private Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
' 送信ボタンイベント
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo Exception
Dim titleArr() As Variant
Dim toAddress As Variant
Dim ccAddress As Variant
Dim bccAddress As Variant
Dim AddressArray() As Variant
Dim propAccessor As Variant
Dim objRecipient As Recipient
Dim name As String
Dim subject As String
Dim msg As String
' タイトル
titleArr = Array("宛先", "CC", "BCC")
' 件名
subject = Item.subject
' メッセージを作成
msg = "件名" & subject & vbCrLf & "アドレスは間違いないですか" & vbCrLf & vbCrLf
' 全てのアドレスを取得
For Each objRecipient In Item.Recipients
Set propAccessor = objRecipient.PropertyAccessor
With objRecipient
name = .name & " <" & propAccessor.GetProperty(PR_SMTP_ADDRESS) & ">"
If .Type = olTo Then
toAddress = toAddress & name & ";"
ElseIf .Type = olCC Then
ccAddress = ccAddress & name & ";"
Else
bccAddress = bccAddress & name & ";"
End If
End With
Next
AddressArray = Array(toAddress, ccAddress, bccAddress)
Dim i As Integer
' 最大インデックスを取得してタイトルごとのメッセージを作成
For i = 0 To UBound(AddressArray)
If Len(AddressArray(i)) = 0 Then AddressArray(i) = ";"
AddressArray(i) = Split(Left(AddressArray(i), Len(AddressArray(i)) - 1), ";")
Next i
Dim j As Integer
For i = 0 To UBound(AddressArray)
msg = msg & titleArr(i) & vbCrLf
For j = 0 To UBound(AddressArray(i))
msg = msg & Trim(AddressArray(i)(j)) & vbCrLf
Next j
Next i
If MsgBox(msg, vbYesNo + vbExclamation, "送信アドレスチェック") = vbNo Then
Cancel = True
Exit Sub
End If
GoTo EXIT_SECTION
Exception:
MsgBox CStr(Err.Number) & ":" & Err.Description, vbOKOnly + vbCritical
Cancel = True
Exit Sub
GoTo EXIT_SECTION
EXIT_SECTION:
Set Item = Nothing
Set propAccessor = Nothing
End Sub
これで送信時にダイヤログが表示され「いいえ」をクリックするとキャンセルすることができます。
-
前の記事
PostgreSQL to_char使用時に空白が入る 2022.09.14
-
次の記事
SQL Server 文字列を数値に変換する 2022.09.15
コメントを書く