我正在运行此代码,将内容从Outlook文件夹TODO复制到Outlook文件夹Test。这两个文件夹都存在。
我知道了
“运行时错误'-2147221233(8004010f)”
Set myItem = myInbox.Folders("TODO")
我尝试过
Dim myItem As Folder
Sub MoveItems()
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = myInbox.Folders("test")
Set myItem = myInbox.Folders("TODO")
While TypeName(myItem) <> "Nothing"
myItem.Move myDestFolder
Set myItem = myItems.FindNext
Wend
End Sub
答案 0 :(得分:1)
这会将所有文件从TODO
移到Test
Sub MoveItems()
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = myInbox.Folders("test")
Set myItems = myInbox.Folders("TODO").Items
'Debug.Print myItems.Count
For i = myItems.Count To 1 Step -1 'Iterates from the end backwards
myItems.Item(i).Move myDestFolder
Next
End Sub
您必须循环文件夹中的所有项目,该代码用于查找特定邮件。
为什么我们使用“向后循环”(礼貌:@ComputerVersteher)
如果您向前循环并删除一个项目(例如第一个),则以下项目将从其前任(例如第二个变为第一)取代,Collection.Count
则减少一个。正向循环会尝试获取直到开始Collection.Count
为止的项目,但是具有最后一个索引的项目不再可用。向后移动时,您将从最后一项开始,如果将其删除,则由于保留位置,下一项(索引1)仍然可用。顺便说一句,For Each
循环也会产生奇怪的结果,删除项目时应避免使用。