Vba 当收件箱中的项目声明为mailitems时出现类型不匹配错误

Vba 当收件箱中的项目声明为mailitems时出现类型不匹配错误,vba,outlook,Vba,Outlook,我在Outlook中有以下VBA代码,可以将邮件移动到旧的个人文件夹中。代码如下: 我在objItem的下一行得到一个异常(看表,它被设置为nothing) 什么会导致objItem为null,从而导致下一个objItem行中出现类型不匹配异常 Sub MoveOldMailFromInbox() Dim objFolder As Outlook.MAPIFolder Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem, ma

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

我在objItem的下一行得到一个异常(看表,它被设置为nothing)

什么会导致objItem为null,从而导致下一个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
子移动OldMailFromInbox()
将objFolder设置为Outlook.MAPIFolder
将对象设置为Outlook.NameSpace,将对象设置为Outlook.MailItem,将邮件设置为Outlook.MailItem
设置objNS=Application.GetNamespace(“MAPI”)
将收件箱设置为MAPI文件夹
设置Inbox=objNS.GetDefaultFolder(olFolderInbox)
Dim mailToMove作为新收藏
黯淡的八五维达西米作为日期
EightyFiveDaysAgo=日期添加(“d”,-85,日期)
设置objFolder=objNS.Folders(“PersonalFolders”).Folders(“InboxOlder超过85天”)
如果objFolder为空,则
MsgBox“此文件夹不存在!”,vbOKOnly+VBEQUOTION,“无效文件夹”
如果结束
对于收件箱中的每个objItem.Items
如果objFolder.DefaultItemType=olMailItem,则
如果objItem.Class=olMail且objItem.ReceivedTime
您正在遍历
收件箱。Items
但您的变量
objItem
被定义为
MailItem
-收件箱中的项目可能并不总是MailItem

试一试


有什么更好的办法?有没有办法将其定义为一般项目,然后检查其是否为邮件项目?
Dim objItem as Object