1

如果邮件是旧的,我在 Outlook 中有以下 VBA 代码可以将邮件移动到个人文件夹。这是代码:

我在 Next objItem 行上遇到了一个异常(查看它设置为空的手表)。

什么会导致 objItem 为空,从而导致Next objItem行中的类型不匹配异常?

Sub MoveOldMailFromInbox()

Dim objFolder As Outlook.MAPIFolder
Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem, mail As Outlook.MailItem

Set objNS = Application.GetNamespace("MAPI")

Dim Inbox As MAPIFolder
Set Inbox = objNS.GetDefaultFolder(olFolderInbox)

Dim mailToMove As New Collection

Dim EightyFiveDaysAgo As Date
EightyFiveDaysAgo = DateAdd("d", -85, Date)

Set objFolder = objNS.Folders("PersonalFolders").Folders("InboxOlderThan85Days")
If objFolder Is Nothing Then
    MsgBox "This folder doesn't exist!", vbOKOnly + vbExclamation, "INVALID FOLDER"
End If

For Each objItem In Inbox.Items
    If objFolder.DefaultItemType = olMailItem Then

        If objItem.Class = olMail And objItem.ReceivedTime < EightyFiveDaysAgo Then

            mailToMove.Add objItem

        End If
    End If
Next objItem


For Each mail In mailToMove
    mail.UnRead = False
    mail.Move objFolder
Next mail

Set objItem = Nothing
Set objFolder = Nothing
Set objNS = Nothing

End Sub
4

1 回答 1

3

您正在迭代,Inbox.Items但您的变量objItem被定义为MailItem- 收件箱中的项目可能并不总是 MailItem。

尝试

Dim objItem as Object
于 2012-07-30T21:38:39.877 回答