このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【Outlook VBA】メールフォルダ内をすべて既読にするマクロ

2024年3月20日

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

受信トレイ内のフォルダと受信トレイと同階層のフォルダ

Outlookでのメールフォルダの位置は大きく3種類あります。

  1. 受信トレイ
  2. 受信トレイ内のメールフォルダ
  3. 受信トレイと同階層のメールフォルダ

このそれぞれのフォルダ内のメールを既読にするマクロを紹介します。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

受信トレイ内を既読にするマクロ

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つ上のオブジェクトから対象のメールフォルダのオブジェクトを取得しています。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい