皆様こんにちは、ノグチです。
前回の記事では、特定のフォルダにメールがあったらOutlook終了時にメッセージを表示する方法をご紹介しました。
しかし返信しないといけないメールだったり、重要な内容のメールを格納しておくフォルダならば、Outlook終了時ではなく、パッと見でフォルダにメールが何件あるか見られるようにしておきたい…
そういえば受信フォルダは、未読メール件数を表示してくれますよね。
ということで今回は、フォルダ内のメール件数を表示できるように、受信フォルダ内の既読メールを未読メールにする方法をご紹介します。
Unreadプロパティで既読メールを未読メールにする
メールの既読・未読をセットするには、MailItemオブジェクトのUnreadプロパティを使います。
UnreadプロパティにTrueをセットするとメールを未読メールに、Falseを指定すると既読メールにすることができます。
記述方法はコチラ。
コードはこちらです。
Sub Mail_Unread() 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("要返信") Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得 With objItem .UnRead = False End With End Sub
このメールを開きつつ、上のコードを実行してみると…
この通り、既読メールが未読メールになっていますね。
フォルダ内のメールを全て既読にする
受信フォルダを右クリックすると、「全て開封済みにする」という、フォルダ内のメールを全て既読メールにする機能がありますよね。
それをVBAでやってみましょう。
こちらの「重要」フォルダ内には、未読メールが5件あります。
この5件のメールを、VBAで既読メールにしてみましょう。
コードはこちらです。
Sub Mail_Unread_InFolder() Dim objItem As Object Dim myNameSpace As NameSpace Dim myInbox As Folder Set myNameSpace = GetNamespace("MAPI") Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("重要メール") For Each objItem In myInbox.Itemss objItem.UnRead = False Next objItem End Sub
まず「重要メール」フォルダのFolderオブジェクトを取得して、Itemメソッドでフォルダ内にあるメールのMailItemオブジェクトを取得。
そして各メールのMailItemオブジェクトのUnreadプロパティにFalseをセットしていくコードです。
こちらを実行して、フォルダの中を覗いてみると…
この通り、メールが全て既読になっていますね。
要返信メールをフォルダに移動して未読メールにするコード
折角なので、前々回までの記事でご紹介した、後で返信が必要なメールを「要返信」フォルダへ移動させるコードに、今回ご紹介しているUnreadプロパティを加えて、既読メールを未読メールにしつつ、「要返信」フォルダへ移動させてみましょう。
コードはこちら。
Sub Reply_and_Move_Mail() Dim objItem As Object Dim objIns As Inspector Dim myNameSpace As NameSpace Dim myInbox As Folder Dim objReply As Object Set myNameSpace = GetNamespace("MAPI") Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox).Folders.Item("要返信") Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得 Set objReply = objItem.Reply With objReply .Body = "予定を確認後連絡します。" & .Body .Send End With With objItem .Move myInbox .UnRead = True End With End Sub
最後に
今回は、MailItemオブジェクトのUnreadプロパティで、既読メールを未読メールにする方法をご紹介しました。
Unreadプロパティは単体ではあまり用途が無いように思えますが、今回のように他のメソッドやイベントと組み合わせると、便利な使い道がありそうですね。
それでは、最後までお読み頂きありがとうございました!
連載目次:【Outlook VBA】メールをワンクリックで操作しよう
基本機能に加えてVBAを使えばもっと便利になるOutlook。
メールの返信、フォルダ移動だってワンクリックでできますよ。
便利なOutlookを、更に手間なく使ってみましょう!