はじめに
Outlookで誤送信を防止する対策をとりたいのですが、、
何か良い方法はないでしょうか。
✓ Outlookの誤送防止方法の伝授
✓ 誤送信防止マクロのコード紹介
Outlookもマクロってあるの?
マクロはExcelだけではありません。Outlookでも使えます。
今回はこれを使って誤送信防止対策を紹介します!
この記事を書いた人
またココナラもやっているので直接会話する場合はこちらから連絡ください!
モリフミブログの記事について解説します ブログで伝えきれなかった細かい話はこちらから。さぁそれではよろしくお願いします!
Microsoft officeのマクロ機能
そもそもですがOutlokにもマクロ機能があります。
マクロで作業効率化!というのはエクセルで目にする耳にすることがほとんどではないでしょうか。
Outlookにもあります。PowerPointにもWordにもあります。
どれどれ・・
Outlookでのマクロ起動手順
手順1.Outlookのアプリを起動する
手順2.Alt キー + F11キー(マクロの画面を開くショートカットキー)を押下する
すると・・
DetaYO!
この画面でマクロのコードを入力していきます。
メールの誤送信防止機能とは
今回紹介するのはメールを送付する前にワンクッション置くためのポップアップを表示する機能です。
まずは宛先を複数名入れて、適当な題名と適当な本文を入れ送信ボタンを押下します。
特に何も設定していなければこのままメールが送信されて、メール作成ウィンドウが閉じます。
そうそう。アッと思ったときにはもう遅いっていう。
ただし、今回紹介するマクロを設定しておけば、宛先に含まれたアドレスを箇条書きに並べて表示し、送信する/しないの最終確認を促すポップアップが表示されます。
どゆこと!具体的に!
マクロを組むことでこのような送信ボタンを押下後にこのようなポップアップを表示させることができます。
【誤送信防止マクロの機能概要】
・「はい」を押下すればメールは送信される
・「いいえ」を押下するとメールは送信されず、メール作成中の画面に戻る
百聞は一見に如かずということで実演動画です。
このくらいシンプルなのがいいですね!
最後モリフミの個人情報出てなかったか?
【おまけ】送信忘れ防止マクロ
こちらはおまけです。
職場によってはplay back mailという機能を導入しているところもあります。
(何のことかという方はここは読み飛ばして下さい。)
これは特定のアドレス(よくあるのは自社ドメイン以外)にメールを送信した場合は、playbackmailにアクセスして送信ボタンを押すことではじめてメールが送信されるというものです。
(自社ドメイン以外の場合は3分後に自動送信される、などなど。設定は様々。)
これ自体が誤送信防止の機能ではあるのですが、playbackmailのシステム上の送信忘れにより他社の人にメールを送り損ねるというケースもなきにしもあらずです。
これを防止するために、自社ドメイン外のアドレスが含まれている場合に先ほどの「はい」を押下した後に以下のポップアップを表示する機能も追加しています。
「はい」を押下すると上記のplaybackmailのログイン画面に自動的に遷移するので、メール送信後すぐにシステム上で送信をすることができます。
こちらについても今回合わせて紹介します。
誤送信防止マクロの設定方法(コードの紹介)
それでは誤送信防止マクロの設定方法を説明していきます。
設定手順
手順1.outlookを立ち上げる
手順2.Alt + F11を押下してマクロの入力画面を立ち上げる
手順3.This Outlook Sessionを選択する
手順4.マクロを入力する箇所(上記の「ここに入力。」の箇所)を選択する
手順5.以下のマクロのコードを貼り付ける
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo Exception
Dim maxCnt As Integer
Dim strCC As String
Dim strBody As String
maxCnt = 0
strCC = vbCrLf
strBody = Item.Body
Dim objRec As Recipient
For Each objRec In Item.Recipients
'★3つの中から選択
'strCC = strCC & "・" & objRec.Name & " " & objRec.Address & vbCrLf '①名前+アドレス
'strCC = strCC & "・" & objRec.Address & vbCrLf '②アドレスだけ
strCC = strCC & "・" & objRec.Name & vbCrLf '③名前だけ
maxCnt = maxCnt + 1
'★表示件数の最大数調整
If maxCnt >= 20 Then Exit For
Next
Dim strMsg As String
'★2つの中から選択
strMsg = "件名:" & Item.Subject & vbCrLf & strCC & vbCrLf & "上記の宛先に、メールを送信してもよろしいですか?" '①メッセージ下に表示
'strMsg = "件名:" & Item.Subject & vbCrLf & vbCrLf & "下記の宛先にメールを送信してもよろしいですか?" & vbCrLf & strCC ’②メッセージ上に表示
If MsgBox(strMsg, vbInformation + vbYesNo + vbDefaultButton2) <> vbYes Then
Cancel = True
Exit Sub 'Noのときは終了
End If
On Error GoTo 0
Exit Sub
Exception:
MsgBox CStr(Err.Number) & ":" & Err.Description, vbOKOnly + vbCritical
Cancel = True
Exit Sub
End Sub
以下のようなイメージです。
手順6.貼り付けし終わったら、右上のxを押下してウィンドウを閉じる
以上!
次に、マクロを有効にする設定を行います。
マクロを有効にする設定方法
手順1.リボンの「ファイル」を押下した後に、「オプション」を押下する
手順2.「トラストセンター」の「トラストセンターの設定」を押下する
手順3.セキュリティレベルを上から3つ目、または4つ目に設定する
【3つ目と4つ目の違い】
3つ目:Outlook立ち上げ時に毎回マクロの使用を確認するポップアップが表示される
4つ目:Outlook立ち上げ時のポップアップが表示されない
4つ目は「推奨しません」とMicrosoftがうたっているので3つ目にしておくのが無難です。
以上!
それでは設定がうまくできているか試してみましょう。
設定がうまくできているか確認する方法
手順1.Outlookアプリを再起動(アプリを閉じて開く)する
手順2.メールを作成し、送信ボタンを押下する
宛先確認のポップアップが表示されるようになっていると思います。
よくわからなければココナラでモリフミに直連絡や!
【おまけ】送信忘れ防止マクロの設定方法(コードの紹介)
上記紹介したマクロのコードを貼り付ける際に、代わりに以下コードを貼り付けしてください。
誤送信防止のマクロ+playbackmailによる送信忘れ防止マクロの複合版になります。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'■■■Outlookマクロ_誤送信チェック■■■
On Error GoTo Exception
Dim maxCnt As Integer
Dim strCC As String
Dim strBody As String
maxCnt = 0
strCC = vbCrLf
strBody = Item.Body
Dim objRec As Recipient
For Each objRec In Item.Recipients
'★3つの中から選択
'strCC = strCC & "・" & objRec.Name & " " & objRec.Address & vbCrLf '①名前+アドレス
'strCC = strCC & "・" & objRec.Address & vbCrLf '②アドレスだけ
strCC = strCC & "・" & objRec.Name & vbCrLf '③名前だけ
maxCnt = maxCnt + 1
'★表示件数の最大数調整
If maxCnt >= 20 Then Exit For
Next
Dim strMsg As String
'★2つの中から選択
strMsg = "件名:" & Item.Subject & vbCrLf & strCC & vbCrLf & "上記の宛先に、メールを送信してもよろしいですか?" '①メッセージ下に表示
'strMsg = "件名:" & Item.Subject & vbCrLf & vbCrLf & "下記の宛先にメールを送信してもよろしいですか?" & vbCrLf & strCC ’②メッセージ上に表示
If MsgBox(strMsg, vbInformation + vbYesNo + vbDefaultButton2) <> vbYes Then
Cancel = True
Exit Sub 'Noのときは終了
End If
'①---8<---
'■■■Outlookマクロ_PlayBackMail忘れ防止■■■
Const domain As String = "@yahoo.co.jp"
Dim chk As Boolean
Dim buf As Variant
Dim i As Integer
Dim ans As Integer
Dim recipent As Outlook.Recipient
Dim pa As Outlook.PropertyAccessor
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Set recipents = Item.Recipients
For Each recipent In recipents
Set pa = recipent.PropertyAccessor
If InStr(1, LCase(pa.GetProperty(PR_SMTP_ADDRESS)), domain, vbTextCompare) = 0 Then
chk = True
Exit For
End If
Next
If chk Then
ans = MsgBox("PlayBackMailの承認画面に遷移しますか?", vbYesNo + vbInformation, "確認")
If ans = vbYes Then
Shell "EXPLORER.EXE https://arinos.playbackmail.com/webPrj/maillogin" 'プレイバックのサイトに遷移
End If
End If
'①---8<---
On Error GoTo 0
Exit Sub
Exception:
MsgBox CStr(Err.Number) & ":" & Err.Description, vbOKOnly + vbCritical
Cancel = True
Exit Sub
End Sub
自分の会社のドメインに設定してくださいね。
さいごに
VBAを読める方は上記のコードで箇条書きで表示するアドレスを「名前+アドレス」にするのか、「アドレス」だけにするのか、「名前」だけにするのかや、箇条書きで表示する件数などをカスタムできるようになっています。
使いやすいようにコードを書き換えてください。
このワンクッションを煩わしいと感じる方もいるかもしれませんが、慣れてしまえば逆にこの最終確認ポップアップがないと不安になるくらいです。
意外とメール送信前のこのワンクッションでCCの漏れや、本文の書きっぷりの不親切さに気づくことがあります。
おすすめなので是非一度試してみてください!
オンライン説明の紹介
なかなかに複雑な内容でしたのでもし口頭で設定方法や使い方を知りたいという方がいましたらココナラから直接会話すること可能です。
お気軽にお問い合わせくださいー
コメント