Outlook VBA:将所有未读日历项标记为已读

时间:2014-10-31 16:25:17

标签: calendar outlook outlook-vba

我在SU上问了一个关于如何手动mark all unread Calendar items in Outlook as read的问题。现在,我想在每次启动Outlook应用程序时自动执行此操作。似乎任何时候都有一个与Outlook同步的新日历条目,默认情况下该条目被标记为未读。

我使用mark all Outlook calendar items private将VBA代码修改为Outlook calendar unread property

我不是程序员,因此我不确定如何在启动期间执行此操作,并且我的所有日​​历和子日历都将未读项目标记为已读。

这是我到目前为止所获得的代码:

Sub MakeAllRead()
Dim oFolder As Outlook.MAPIFolder
Dim oItems As Outlook.Items
Dim oAppt As Outlook.AppointmentItem

On Error Resume Next

Set oFolder = Application.Session.GetDefaultFolder(olFolderCalendar)
Set oItems = oFolder.Items
For Each oAppt In oItems
If Err Then
Err.Clear
Else
oAppt.UnRead = False
oAppt.Save
End If
Next
End Sub

1 个答案:

答案 0 :(得分:1)

要在启动时运行MakeAllRead,请将其放在ThisOutlookSession中。

Private Sub Application_Startup() 

    MakeAllRead

End Sub 

我猜在代码运行之前日历项不会出现。然后,您必须继续手动运行代码。

请参阅此类非默认日历,具体取决于文件夹结构中的位置。

Application.Session.Folders("日历名称")

Application.Session.Folders("其他邮箱名称")。文件夹("日历名称")

Application.Session.Folders("其他邮箱名称")。文件夹("收件箱")。文件夹("日历名称")

Application.Session.GetDefaultFolder(olFolderInbox).Folders("其他日历名称")