件名や本文に特定の文字列を含む場合に送信を阻止するマクロ


コメントにて以下のご要望をいただきました。


いつも参考にさせていただいています。
Outlook2016を使用していますが、メールの送信についての質問です。

作成したメールで「件名、本文」に特定の文字が存在している時に送信しない( or エラーメッセージ)を出す方法を探しています。

やりたい事は以下のとおりです。
① メールのテンプレートで作成毎に変わる所を「○○○」とする(相手の名前、会社名、来訪日など)
② メールを書くときはテンプレートで新規作成をして日にちや相手に合わせて「○○○」の所を手動で変更する
③ 「○○○」が「件名、本文」に存在する時は、メール内容に不備があるとしてメールを送らない

とこんな感じです。

以前は前の文章をコピペしていましたが、見落としで会社名や人の名前、
日付が前のままになっていて大問題になってしまったので。

どうぞよろしくお願いします。


メールの送信時に件名や本文などをチェックし、送信をキャンセルするには Application オブジェクトの ItemSend イベントを使用します。
ItemSend イベントの中で Cancel に True を設定すると、送信をキャンセルすることができます。
また、件名や本文に特定の文字列があるかどうかのチェックには InStr 関数を使用します。
InStr 関数は InStr( 検索対象, 検索文字列 ) のように指定すると、検索文字列が見つかった位置を返すもので、この関数が 0 より大きい値を返した場合は、検索文字列が含まれていると判断できます。
マクロは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     ' チェックする文字列を指定
     Const NG_WORD = "○○○"
     ' 件名か本文に問題の文字列が含まれるかを確認
     If InStr(Item.Subject, NG_WORD) > 0 Or InStr(Item.Body, NG_WORD) > 0 Then
         ' 含まれていたらエラーを表示
         MsgBox NG_WORD & "が残っています。"
         ' 送信をキャンセル
         Cancel = True
     End If
End Sub

マクロの登録方法やメニューへの追加について

広告

件名や本文に特定の文字列を含む場合に送信を阻止するマクロ」への1件のフィードバック

  1. コードの公開ありがとうございます。とても参考になります。
    質問ですが、チェックする文字に指定したキーワードが『完全に含まれる』場合のみエラー表示させるにはどのようなコードになるでしょうか?
    例えば、いまのコードだと“メール:”をキーワードにしても「メール」という文言が書いてあるだけでチェックにかかってしまうので、“:”まで書いてある場合のみエラー表示にしたいのです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

w

%s と連携中