【Outlook VBA】UnReadItemCountプロパティで受信フォルダの未読メール件数を取得する方法


outlook,vba,unreaditem,アイキャッチ

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

ちょっと油断するとすぐに溜まっていく未読メール。

ちゃんと目を通していけばいいんですが、最近メールでやり取りすることも減っていることもあって、ついつい溜めがちになってしまいます。

特定の送信先から送られたメールをサブフォルダに振り分けるようにしてみたりしますが、それでも未読メールがあるのを見落としてしまったりして…

フォルダに未読メールがあることをダイアログで表示できたらいいのになあ…

そんなときこそVBAの出番です!

今回は、Outlookの未読メール件数を取得して、メッセージで表示する方法をご紹介します!
スポンサーリンク

UnReadItemCountでプロパティで未読メール件数を取得する

UnReadItemCountプロパティの記述方法

まずは、受信ボックスの未読メール件数を取得するところから始めましょう。

受信ボックスの未読メール件数を取得するためには、FolderオブジェクトのUnReadItemCountプロパティを使います。

記述方法はこちら。

Folderオブジェクト.UnReadItemCount

ちなみに、Folderオブジェクトを取得する方法はこちらの記事でご紹介していますので、併せてご覧くださいね。

エクセルVBAでOutlookの受信メールフォルダとサブフォルダ名を書き出す方法
エクセルVBAでOutlookの受信メールフォルダにあるメールの内容を、エクセルのワークシートに書き出す方法を、数回の連載でご紹介しています。今回は、GetDefaultFolderメソッドとFoldersプロパティで、受信メールフォルダとサブフォルダの名称を書き出す方法のご紹介です。

受信フォルダ内の未読メール件数を取得するコード

UnReadItemCountで未読メールを取得するには、こんな感じで記述します。

Private Sub GetUnReadMail()

Dim myNamespace     As NameSpace
Dim myInbox         As Object
Dim lngMailcnt      As Long
Dim i               As Long

Set myNamespace = GetNamespace("MAPI")

Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
lngMailcnt = myInbox.UnReadItemCount

MsgBox "未読メールが" & lngMailcnt & "件あります!"

End Sub

これで、受信ボックス内の未読メール件数を取得してくれます。

そしてこのコードを実行してみると…

outlook,vba,未読メール,受信フォルダ

この通り、未読メール件数がメッセージで表示されましたね。

未読メール溜めすぎだろ!というツッコミはご容赦くださいませ…

特定のサブフォルダ内の未読メール件数を取得する場合

上のコードでは、受信フォルダの未読メール件数を取得していますが、特定のサブフォルダだけの未読メール件数を取得することもできますよ。

サブフォルダのFolderオブジェクトを取得して、取得したFolderオブジェクトのUnReadItemCountプロパティを使えばよいだけなので、上のコードの

lngMailcnt = myInbox.UnReadItemCount

の部分を、

lngMailcnt = myInbox.Folders.Items("特定のサブフォルダ名")UnReadItemCount

とすれば、サブフォルダの未読メール件数を取得してくれます。

この場合は、Outlookの仕訳ルールと併せて使えば、自分にとってより重要度の高いメールの未読メール件数をキャッチすることができますね。

サブフォルダの未読メール件数を取得するコード

例えば、コチラの画像の「議事録」というサブフォルダの未読メールだけを取得したい場合。

outlook,vba,未読メール,サブフォルダ

先に説明した通り、Folderオブジェクトを取得する部分を、サブフォルダのFolderオブジェクトを取得するように変えればよいだけなので、

lngMailcnt = myInbox.UnReadItemCount

の部分を、

lngMailcnt = myInbox.Folders.Items("議事録").UnReadItemCount

とすれば、「議事録」というサブフォルダにある未読メール件数を取得してくれます。

全体のコードはこんな感じになります。

Private Sub Application_Startup()

Dim myNamespace     As NameSpace
Dim myInbox         As Object
Dim lngMailcnt      As Long
Dim i               As Long

Set myNamespace = GetNamespace("MAPI")

Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
lngMailcnt = myInbox.Folders.Items("議事録").UnReadItemCount

MsgBox "未読メールが" & lngMailcnt & "件あります!"

End Sub

そして、このコードを実行してみると…

outlook,vba,未読メール,サブフォルダ,メッセージ表示

この通り、サブフォルダ「議事録」の未読メールだけを取得して、メッセージ表示してくれますね。

最後に

今回は、Outlookの未読メール件数を取得して、メッセージで表示する方法をご紹介しました。

未読メールがあるのをいつも見落としてしまうという方にはオススメです。

また、イベントと組みわせたりしてみると、もっと便利に使えるかもしれませんね。

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

連載目次:Outlook VBAでメールを操作してみよう

メーラーとして名高く、そして便利なOutlook。

Outlookのメールだって、VBAで操作することができますよ。本シリーズでは、Outlookのメールを、VBAで操作する方法をご紹介していきます。

  1. 【Outlook VBA】メールの送信時イベントで確認ダイアログを表示する方法
  2. 【Outlook VBA】UnReadItemCountプロパティで受信フォルダの未読メール件数を取得する方法
  3. 【Outlook VBA】メール本文から欲しい情報だけを取り出す方法
  4. 【Outlook VBA】Application_NewMailExイベントでメール受信時にメッセージを表示する方法

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