无法将电子邮件移动到其他文件夹

时间:2016-01-15 07:41:38

标签: vba email outlook outlook-vba

以下行不适用于我的Sub。它只显示Add,Application,Class,Count等,但并没有真正提示我使用Move功能。

objItems.Move objDestFolder

以下是其余代码:

Sub MoveEmail()

Dim objNS As NameSpace
Dim objFolder As MAPIFolder
Dim objDestFolder As MAPIFolder
Dim obj As Object
Dim objOL As Outlook.Application
Dim objItems As Outlook.items

    Set objOL = Outlook.Application
    Set objNS = objOL.Application.Session

'specify the Inbox Folder you want to extract the email
Set objFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("For Processing")
Set objItems = objFolder.items

Set objDestFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("For Temp")

For Each obj In objItems
    If obj.Class = olMail Then
        objItems.Move objDestFolder

        Set obj = Nothing
        Set objItems = Nothing
        Set objFolder = Nothing
        Set objOL = Nothing
        Set objDestFolder = Nothing

    End If

Next

End Sub

2 个答案:

答案 0 :(得分:1)

您正在调用Items对象上的Move,而不是MailItem。如果要修改集合,也不应使用“for each”。使用向下循环。 将您的代码更改为

For i = objItems.Count to 1 step -1
    set obj = objItems.Item(I)
    If obj.Class = olMail Then
        obj.Move objDestFolder
    End If
Next

答案 1 :(得分:0)

不确定为什么你要使用For Each循环,但是一旦你迭代到的对象是一个,那么设置你正在迭代到的任何东西的集合变量邮件项目?

无论如何,我不相信你可以一次移动整个文件夹,因此IntelliSense没有为你提供将该方法与对象一起使用的选项。

您需要遍历文件夹中的每个邮件项目并单独移动它们。

For Each obj In objItems
    If obj.Class = olMail Then
        obj.Move objDestFolder    
    End If
Next obj