2016-02-26 61 views
3

我是VBA的新手,正在寻找一种方法将读取的电子邮件从名为“ForApproval”的文件夹移回收件箱。在Stack上找到这个代码,它工作出色,但是当我尝试反转源和目的地并将我的文件夹名称放在 - 我得到时:运行时错误'424':Object Required(见下面的截图)将读取的项目从文件夹移回收件箱

有人可以快速查看并说出这里有什么问题吗?

原始代码:

Sub ReadMailMover() 

    Set objOutlook = CreateObject("Outlook.Application") 

    Set objNamespace = objOutlook.GetNamespace("MAPI") 

    **Set objFolderSrc = objNamespace.GetDefaultFolder(olFolderInbox)** 

    **Set objFolderDst = objFolderSrc.Parent.folders("__Reviewed")** 

    Set colitems = objFolderSrc.Items 

    Set colfiltereditems = colitems.Restrict("[UnRead] = False") 

    For intMessage = colfiltereditems.Count To 1 Step -1 

    colfiltereditems(intMessage).Move objFolderDst 

    Next 

    End Sub 

我的反向版本:

Sub ReadMailMover() 

Set objOutlook = CreateObject("Outlook.Application") 

Set objNamespace = objOutlook.GetNamespace("MAPI") 

**Set objFolderSrc = objFolderSrc.Parent.Folders("ForApproval")** 

**Set objFolderDst = objNamespace.GetDefaultFolder(olFolderInbox)** 

Set colitems = objFolderSrc.Items 

Set colfiltereditems = colitems.Restrict("[UnRead] = False") 

For intMessage = colfiltereditems.Count To 1 Step -1 

colfiltereditems(intMessage).Move objFolderDst 

Next 

End Sub 

enter image description here

Runtime Error I'm getting

回答

2

在反转代码中,当初始化变量objFolderSrc时,它包含对自身的引用。

Set objFolderSrc = objFolderSrc.Parent.Folders("ForApproval") 

此时objFolderSrc未初始化。它没有引用任何内容。出于这个原因,它不能用来定义一个位置。

尝试此代替:

Set objFolderSrc = application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Parent.Folders("ForApproval") 

在这里,循环引用已被替换。您的源文件夹通过收件箱引用。

+0

这工作就像一个魅力!非常感谢快速和现场答案! – LaMirek

相关问题