【发布时间】:2020-03-14 11:05:08
【问题描述】:
我有一个 Outlook 2019 IMAP 帐户,我正在尝试使用以下 VBA 代码将“垃圾邮件”文件夹中的所有电子邮件标记为自动已读。
我在 Stack Overflow 上找到了代码,并更改了第一个 IF 语句以仅获取 Spam 文件夹。
它给了我
“数组索引越界”_错误(80020009)
在第 3 次或第 4 次迭代之后(因此最多删除三封电子邮件)并且代码中断。
为什么会失败,我可以参数化此代码以选择任意文件夹名称吗?
Sub MarkAllItemsAsRead()
Dim objStores As Outlook.Stores
Dim objStore As Outlook.Store
Dim objOutlookFile As Outlook.Folder
Dim objFolder As Outlook.Folder
'Process all Outlook files
Set objStores = Outlook.Application.Session.Stores
For Each objStore In objStores
Set objOutlookFile = objStore.GetRootFolder
For Each objFolder In objOutlookFile.Folders
'Process mail folders
If objFolder.DefaultItemType = olMailItem And objFolder.Name = "Spam" Then
Debug.Print objFolder.Name
Call ProcessFolders(objFolder)
End If
Next
Next
End Sub
Sub ProcessFolders(ByVal objCurFolder As Outlook.Folder)
Dim objUnreadItems As Outlook.Items
Dim i As Integer
Dim objItem As Object
Dim objSubFolder As Outlook.Folder
Set objUnreadItems = objCurFolder.Items.Restrict("[Unread]=True")
'Mark all unread emails as read
For i = 1 To objUnreadItems.Count
Set objItem = objUnreadItems.Item(i)
objItem.UnRead = False
objItem.Save
Next
End Sub
【问题讨论】:
-
你的代码是什么?你试过什么,有什么问题?请记住,“请有人为我写代码”并不是一种可以在这里赢得很多朋友的方法。
-
很抱歉,在这里,但经过 3 次迭代后,它给了我“数组索引超出范围”错误 (80020009):