【Outlook VBA】メールフォルダ内をすべて既読にするマクロ
今回はOutlook VBAでメールフォルダ内をすべて既読にするマクロを紹介します。

Outlookでのメールフォルダの位置は大きく3種類あります。
- 受信トレイ
- 受信トレイ内のメールフォルダ
- 受信トレイと同階層のメールフォルダ
このそれぞれのフォルダ内のメールを既読にするマクロを紹介します。
受信トレイ内を既読にするマクロ
Sub UnReadInboxFldr()
'''受信トレイ内のメールを既読にする
Dim myNameSpace As Outlook.NameSpace, inbox As Outlook.Folder
Set myNameSpace = Application.GetNamespace("MAPI")
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Dim oneItem As Object
For Each oneItem In inbox.Items
''メールアイテムのみを既読に変更
If (oneItem.Class = olMail) Then oneItem.UnRead = False
Next
End Sub
受信トレイ内を既読にするマクロはこのようになります。
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
この部分で受信トレイのオブジェクトを取得しています。
受信トレイ内のメールフォルダを既読にするマクロ

Sub UnReadInboxInnerFldr()
'''受信トレイ内のメールフォルダを既読にするマクロ
''対象のメールフォルダ名
Const FLDR_NAME = "受信トレイ内のメールフォルダ"
Dim myNameSpace As Outlook.NameSpace, inbox As Outlook.Folder, targetFldr As Outlook.Folder
Set myNameSpace = Application.GetNamespace("MAPI")
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set targetFldr = inbox.Folders.Item(FLDR_NAME)
Dim oneItem As Object
For Each oneItem In targetFldr.Items
''メールアイテムのみを既読に変更
If (oneItem.Class = olMail) Then oneItem.UnRead = False
Next
End Sub
受信トレイ内のメールフォルダを既読にするマクロはこのようになります。
FLDR_NAMEを変更すれば既読にするメールフォルダが変更できます。
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set targetFldr = inbox.Folders.Item(FLDR_NAME)
この部分で受信トレイのオブジェクトを取得して、さらにその内部にあるフォルダのオブジェクトを取得しています。
受信トレイと同階層のメールフォルダを既読にするマクロ

Sub UnReadFldr()
'''受信トレイと同階層のメールフォルダを既読にするマクロ
''対象のメールフォルダ名
Const FLDR_NAME = "受信トレイと同階層のメールフォルダ"
Dim myNameSpace As Outlook.NameSpace, inbox As Outlook.Folder, targetFldr As Outlook.Folder
Set myNameSpace = Application.GetNamespace("MAPI")
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set targetFldr = inbox.Parent.Folders.Item(FLDR_NAME)
Dim oneItem As Object
For Each oneItem In targetFldr.Items
''メールアイテムのみを既読に変更
If (oneItem.Class = olMail) Then oneItem.UnRead = False
Next
End Sub
受信トレイと同階層のメールフォルダを既読にするマクロはこのようになります。
FLDR_NAMEを変更すれば既読にするメールフォルダが変更できます。
Set inbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set targetFldr = inbox.Parent.Folders.Item(FLDR_NAME)
この部分で受信トレイのオブジェクトを取得して、さらにParentプロパティで1つ上のオブジェクトを取得しています。
その後、1つ上のオブジェクトから対象のメールフォルダのオブジェクトを取得しています。