【OutlookVBA Tips】ーメール送信時の添付忘れ警告を出すー

wakaru-program Outlook VBA

仕事でメールのやり取りをする際、うっかり添付ファイルをつけ忘れてしまった!という経験はありませんか?
今回の記事では、そんなうっかりミスを防ぐことのできる、OutlookのVBAの方法についてご紹介します。

OutlookVBAはサンプルファイルはありません

まず、メール送信時に添付ファイルの有無をチェックする機能を作っていきます。
その前準備として、『Application_ItemSend』を用意します。この関数を使うことで、メール送信時にVBAが実行され、チェックすることができます

左のプロジェクトウィンドウにある「ThisOutlookSession」をクリックし、「Application」→「ItemSend」をクリックすると、「Private Sub Application_ItemSend」という関数が自動生成されます。この関数の中に下記のコードをコピペして使ってみましょう!

スポンサーリンク

コードと内容の解説

ここからは、実際のコードと内容を解説します。

まずは、こちらが実際のコードとなります。

手順の流れとしては、

  • Itemオブジェクトから件名と本文を取得
  • 件名と本文に「添付」が入っているかをチェック
  • 「添付」ありで、添付ファイルがない場合に、警告メッセージを表示する

という流れになっています。

VBAコード

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim strSubject As String    '件名
    Dim strBody As String       '本文
    Dim rc As Integer

    strSubject = Item.Subject   '件名の取得
    strBody = Item.Body         '本文の取得

    '件名か本文に「添付」という単語があるか?
    If InStr(strSubject & strBody, "添付") > 0 Then
    
        '添付ファイルの有無を確認
        If Item.Attachments.Count = 0 Then
        
            '警告メッセージを表示
            rc = MsgBox("添付ファイルを忘れていませんか?" & vbCrLf & _
                "そのまま送信しますか?", vbYesNo + vbQuestion + vbDefaultButton2)
                
            If rc = vbNo Then
                Cancel = True
                Exit Sub
            End If
            
        End If
    End If

End Sub

詳細解説

Dim strSubject As String    '件名
    Dim strBody As String       '本文
    Dim rc As Integer
    strSubject = Item.Subject   '件名の取得
    strBody = Item.Body         '本文の取得

件名と本文を入れる文字列型の変数を宣言し、件名と本文を取得します。

Itemオブジェクトは、メール送信時にメールの中身が入ったものが出てきますので、そこから、「.Subject」で件名を、「.Body」で本文を取得します。

 If InStr(strSubject & strBody, "添付") > 0 Then

件名と本文を入れた変数をつなげて、InStr関数を使って「添付」単語が入っているかをまとめてチェックします。

Instr(string1, string2)
引数 string1 :検索の対象となる文字列を指定します。
引数 strign2 :引数string1の中から検索する文字列を指定します。

 InStr関数は、引数string2で指定した文字列を、引数string1で指定した文字列の中から検索して位置を返す関数です。見つからなかった場合は、0を返しますので、今回は0より大きいという判定を入れることで、単語の有無を確認しています。

If Item.Attachments.Count = 0 Then

「添付」の文字が入っていた場合に、次に添付ファイルの有無を判断します。
「Item」がメール本体、「Attachments」が添付ファイルを指し、「Count」を使うことで添付ファイルの数をカウントします。ここでは、カウント結果が0の場合に、添付ファイルを忘れていると判断しています。

rc = MsgBox("添付ファイルを忘れていませんか?" & vbCrLf & _
                "そのまま送信しますか?", vbYesNo + vbQuestion + vbDefaultButton2)
                
            If rc = vbNo Then
                Cancel = True
                Exit Sub
            End If

最後に、添付ファイルがない場合に、MsgBoxを使って、警告メッセージを表示します。
「添付ファイルを忘れていませんか?そのまま送信しますか?」とメッセージボックスを表示し、「はい」→そのまま送信/「いいえ」→送信をキャンセルと処理を分岐させます。

今回の記事のプログラムを使うと、メール送信時に添付ファイルの有無をチェックし、うっかり添付忘れしてしまうことが防げます。
自分のミスをマクロの仕組みで防ぐことができるので、一段上の仕事ができるはずです。皆様も是非、試してみてくださいね!

タイトルとURLをコピーしました