【问题标题】:Moving read items from a folder back to inbox将已读项目从文件夹移回收件箱
【发布时间】:2016-02-26 12:42:17
【问题描述】:

我是 VBA 新手,正在寻找一种将已读电子邮件从名为“ForApproval”的文件夹移回收件箱的方法。在Stack 上找到此代码,它运行良好,但是当我尝试反转源和目标并将我的文件夹名称放入时 - 我得到:运行时错误'424':需要对象(见下面的屏幕截图)

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

原始代码:

    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

Runtime Error I'm getting

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

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

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

    此时 objFolderSrc 未初始化。它没有引用任何东西。因此,它不能用于定义位置。

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2020-03-10
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2012-09-25
      相关资源
      最近更新 更多