【Outlook VBA】QuitイベントでOutlook終了時にメッセージを表示する


outlook,quit,eyecatch

皆様こんにちは、ノグチです。

前回の記事で、返信が必要なメールを「要返信」というフォルダに移動させる方法をご紹介しました。

【Outlook VBA】Moveメソッドでメールを指定のフォルダに移動させる方法
Outlook VBAで、Moveメソッドを使った今開いているメールをワンクリックで指定のフォルダへ移動する方法をご紹介しています。移動させたいメールを、移動先のフォルダへドラッグ&ドロップ…なんてしなくても、この方法ならワンクリックで移動させることができますよ。

しかし、返信が必要なメールをフォルダに移動させたは良いけれど、移動させたっきりではそのまま返信を忘れてしまうかもしれませんよね。

一日のお仕事が終わってPCを閉じた途端に、「しまった!あのメール返信してない!」と思い出すこともあるかもしれませんし、最悪翌朝Outlookを立ち上げた時に思い出したりするかもしれません。

せめて、Outlookを終了するときに「まだ返信していないメールがあるよ」というメッセージが表示されれば、返信忘れを防げるかもしれないのに…

ということで今回は、Quitイベントで、Outlook終了時に特定のフォルダにメールがあったら、メッセージを表示する方法をご紹介します!

スポンサーリンク

Outlook終了時に実行されるQuitイベント

これまで、Outlookのイベントもいくつか紹介してきましたね。

今回ご紹介するのは、Quitイベントです。

Quitイベントは、その名の通り、Outlookが終了するときに実行されるイベントです。

Outlook終了時に何か処理をさせたい場合、このQuitイベントのイベントプロシージャにコードを差し込んでいきます。

イベントをVBEでコーディングする方法は、こちらの記事でご紹介していますので併せてご覧ください。

【Outlook VBA】イベントApplication_Startupで起動時に今日の予定を表示する方法
Outlook の起動時イベントApplication_Startupに処理を書き込むことで、Outlookを立ち上げた時に今日の予定を取得してメッセージを表示する方法をご紹介しています。これなら、毎日の予定がOutlook起動時に把握できますよ。

QuitイベントでOutlook終了時にメッセージを表示する

では早速、QuitイベントでOutlook終了時にメッセージを表示してみましょう。

コードはとっても単純。

Private Sub Application_Quit()
    MsgBox "Outlookを終了します。"
End Sub

Quitのイベントプロシージャに、MsgBox関数を差し込んだだけです。

このコードを保存して、Outlookを終了させてみると…

quit,メッセージ

この通り、メッセージが表示されますね。

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オブジェクトを取得。

「要返信」フォルダ内にメールがあったら、メッセージを表示する、というコードです。

早速実行してみましょう。

このように、要返信フォルダにメールを入れておいて、

要返信,フォルダ
コードを実行してみると…
メッセージ,Quit,メール残り
この通り、メッセージが表示されました!

Outlook終了をキャンセルすることはできない

Quitイベントですが、残念なことがひとつ。

それは、イベントの引数にCancelが無いので、イベント自体、すなわちOutlookの終了という処理をキャンセルすることができないところです。

もし引数にCancelがあれば、「要返信フォルダにメールが残っています。Outlookを終了してもよろしいですか?」というメッセージを「はい」「いいえ」ボタンと共に表示して、「いいえ」が選択されたらOutlookを終了させない…ということができますが、こればっかりはどうしようもありません。

メッセージが表示されたら、大人しくOutlookをもう一度起動して、「要返信」フォルダを覗くことにしましょう。

最後に

今回は、OutlookのQuitイベントで、Outlook終了時に特定のフォルダにメールがあったらメッセージを表示する方法をご紹介しました。

要確認だったり、返信が必要なメールを特定のフォルダに集めておいて、今回ご紹介したQuitイベントでフォルダ内にメールが残っていないか?をチェックするようにすれば、確認漏れや返信忘れも防げますね。

それでは最後までお読みいただき、ありがとうございました!

連載目次:【Outlook VBA】メールをワンクリックで操作しよう

基本機能に加えてVBAを使えばもっと便利になるOutlook。

メールの返信、フォルダ移動だってワンクリックでできますよ。

便利なOutlookを、更に手間なく使ってみましょう!

  1. 【Outlook VBA】Replyメソッドでメールにワンクリックで返信する方法
  2. 【Outlook VBA】Moveメソッドでメールを指定のフォルダに移動させる方法

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