【Outlook VBA】Unreadプロパティでメールを未読に戻す方法


outlook,mailitem,unread

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

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

【Outlook VBA】QuitイベントでOutlook終了時にメッセージを表示する
Outlook終了時に実行されるイベント、Quitイベントで、Outlook終了時にメッセージを表示させる方法をご紹介しています。返信が必要なメールは専用のフォルダに入れておいて、このイベントを使えば、返信していないメールがあることを知らせることができますよ。

しかし返信しないといけないメールだったり、重要な内容のメールを格納しておくフォルダならば、Outlook終了時ではなく、パッと見でフォルダにメールが何件あるか見られるようにしておきたい…

そういえば受信フォルダは、未読メール件数を表示してくれますよね。

ということで今回は、フォルダ内のメール件数を表示できるように、受信フォルダ内の既読メールを未読メールにする方法をご紹介します。

スポンサーリンク

Unreadプロパティで既読メールを未読メールにする

メールの既読・未読をセットするには、MailItemオブジェクトのUnreadプロパティを使います。

UnreadプロパティにTrueをセットするとメールを未読メールに、Falseを指定すると既読メールにすることができます。

記述方法はコチラ。

MailItemオブジェクト.Unread
では試しに、このUnreadプロパティを使って、今開いているメールを未読メールにしてみましょう。

コードはこちらです。

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

outlook,メール,未読

このメールを開きつつ、上のコードを実行してみると…

outlook,既読メール,フォルダ

この通り、既読メールが未読メールになっていますね。

フォルダ内のメールを全て既読にする

受信フォルダを右クリックすると、「全て開封済みにする」という、フォルダ内のメールを全て既読メールにする機能がありますよね。

それをVBAでやってみましょう。

こちらの「重要」フォルダ内には、未読メールが5件あります。

outlook,unread,folder

この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をセットしていくコードです。

こちらを実行して、フォルダの中を覗いてみると…

outlook,既読メール

この通り、メールが全て既読になっていますね。

要返信メールをフォルダに移動して未読メールにするコード

折角なので、前々回までの記事でご紹介した、後で返信が必要なメールを「要返信」フォルダへ移動させるコードに、今回ご紹介している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
最後のMoveメソッドで「要返信」フォルダに移動させる手前にUnreadプロパティで未読メールにしています。
 
このコードを実行すれば、「要返信」フォルダに格納されたメールが未読メールになって、フォルダ名の隣にフォルダに何件メールがあるか一目瞭然ですね!

最後に

今回は、MailItemオブジェクトのUnreadプロパティで、既読メールを未読メールにする方法をご紹介しました。

Unreadプロパティは単体ではあまり用途が無いように思えますが、今回のように他のメソッドやイベントと組み合わせると、便利な使い道がありそうですね。

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

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

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

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

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

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

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