1

メールが古い場合に個人用フォルダーに移動するために、Outlook に次の VBA コードがあります。コードは次のとおりです。

Next objItem 行で例外が発生します (何も設定されていないウォッチを見てください)。

objItem が null になり、次の objItem行でType Mismatch例外が発生する原因は何ですか?

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 に答える