皆様こんにちは、ノグチです。
前回の記事では、特定のフォルダにメールがあったら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を、更に手間なく使ってみましょう!





