Попробуйте следующее:
Public Sub Mark_Unread_If_No_Category() Dim objNS As Outlook.NameSpace: Set objNS = GetNamespace("MAPI") Dim olFolder As Outlook.MAPIFolder: Set olFolder = objNS.GetDefaultFolder(olFolderInbox) Dim Item As Object For Each Item In olFolder.Items If Item.Class = 43 Then ' 43 = an email Dim oMail As Outlook.MailItem: Set oMail = Item If oMail.Categories = "" Then Debug.Print "Marking as unread: " & oMail.Subject oMail.UnRead = True oMail.Save End If Set oMail = Nothing End If DoEvents ' So Outlook doesn't lock up whilst running Next Set olFolder = Nothing Set objNS = Nothing End Sub
Я знаю, что он правильно выглядит в папке «Входящие» и правильно находит электронные письма без категорий (это Debug.Print
подтверждает), однако я не проверял, чтобы эти письма стали непрочитанными.
В результате вы должны сделать резервную копию своего почтового ящика, прежде чем начать.