皆様こんにちは、ノグチです。
前回の記事で、返信が必要なメールを「要返信」というフォルダに移動させる方法をご紹介しました。
しかし、返信が必要なメールをフォルダに移動させたは良いけれど、移動させたっきりではそのまま返信を忘れてしまうかもしれませんよね。
一日のお仕事が終わってPCを閉じた途端に、「しまった!あのメール返信してない!」と思い出すこともあるかもしれませんし、最悪翌朝Outlookを立ち上げた時に思い出したりするかもしれません。
せめて、Outlookを終了するときに「まだ返信していないメールがあるよ」というメッセージが表示されれば、返信忘れを防げるかもしれないのに…
ということで今回は、Quitイベントで、Outlook終了時に特定のフォルダにメールがあったら、メッセージを表示する方法をご紹介します!
Outlook終了時に実行されるQuitイベント
これまで、Outlookのイベントもいくつか紹介してきましたね。
今回ご紹介するのは、Quitイベントです。
Quitイベントは、その名の通り、Outlookが終了するときに実行されるイベントです。
イベントをVBEでコーディングする方法は、こちらの記事でご紹介していますので併せてご覧ください。
QuitイベントでOutlook終了時にメッセージを表示する
では早速、QuitイベントでOutlook終了時にメッセージを表示してみましょう。
コードはとっても単純。
Private Sub Application_Quit() MsgBox "Outlookを終了します。" End Sub
Quitのイベントプロシージャに、MsgBox関数を差し込んだだけです。
このコードを保存して、Outlookを終了させてみると…
この通り、メッセージが表示されますね。
Outlook終了時に要返信フォルダにメールがあったらメッセージを表示する
では、このQuitイベントで、特定のフォルダにメールがあったらメッセージを表示してみましょう。
フォルダは、前回記事でご紹介した、「要返信」のフォルダにします。
コードはこちら。
Private Sub Application_Quit() Dim objItem As Object Dim objIns As Inspector Dim myNameSpace As NameSpace Dim myInbox As Folder Set myNameSpace = GetNamespace("MAPI") Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("要返信") If myInbox.Items.Count > 0 Then MsgBox "要返信フォルダにメールが残っています。" End If End Sub
GetNameSpaceメソッドでNameSpaceオブジェクトを取得し、GetDefaultFolderメソッドとFoldersオブジェクトのItemメソッドで「要返信」フォルダのFolderオブジェクトを取得。
「要返信」フォルダ内にメールがあったら、メッセージを表示する、というコードです。
早速実行してみましょう。
このように、要返信フォルダにメールを入れておいて、
Outlook終了をキャンセルすることはできない
Quitイベントですが、残念なことがひとつ。
それは、イベントの引数にCancelが無いので、イベント自体、すなわちOutlookの終了という処理をキャンセルすることができないところです。
もし引数にCancelがあれば、「要返信フォルダにメールが残っています。Outlookを終了してもよろしいですか?」というメッセージを「はい」「いいえ」ボタンと共に表示して、「いいえ」が選択されたらOutlookを終了させない…ということができますが、こればっかりはどうしようもありません。
最後に
今回は、OutlookのQuitイベントで、Outlook終了時に特定のフォルダにメールがあったらメッセージを表示する方法をご紹介しました。
要確認だったり、返信が必要なメールを特定のフォルダに集めておいて、今回ご紹介したQuitイベントでフォルダ内にメールが残っていないか?をチェックするようにすれば、確認漏れや返信忘れも防げますね。
それでは最後までお読みいただき、ありがとうございました!
連載目次:【Outlook VBA】メールをワンクリックで操作しよう
基本機能に加えてVBAを使えばもっと便利になるOutlook。
メールの返信、フォルダ移動だってワンクリックでできますよ。
便利なOutlookを、更に手間なく使ってみましょう!