以下行不适用于我的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
答案 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