2016-02-26 85 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

相關問題