引用不在默认收件箱下的文件夹

use*_*671 6 outlook vba outlook-vba

我尝试了无数种方法从超过14天的自定义文件夹“ Spam Digests”中删除项目。当我将该文件夹嵌套在的下面时,我已经成功完成了此操作,olDefaultFolder(Inbox)但是当我将其放在默认收件箱之外时,由于收到未找到的对象,因此无法引用它。

这是我所拥有的,我似乎无法弄清楚为什么在引用时找不到对象 "fldSpamDigest"

    Dim outapp As Outlook.Application
    Set outapp = CreateObject("outlook.application")
    Dim olitem As Object
    Dim fldSpamDigest As Outlook.MAPIFolder

    Set fldSpamDigest = outapp.GetNamespace("MAPI").Folders("Spam Digests")
    For Each olitem In fldSpamDigest.Items
        If DateDiff("d", olitem.CreationTime, Now) > 14 Then olitem.Delete
    Next

    Set fldSpamDigest = Nothing
    Set olitem = Nothing
    Set outapp = Nothing
Run Code Online (Sandbox Code Playgroud)

nit*_*ton 6

GetDefaultFolder(olFolderInbox)是一条捷径。

您可以长期引用任何文件夹。

Sub reference_walk_the_path()

    Dim outapp As Outlook.Application
    Set outapp = CreateObject("outlook.application")

    Dim olitem As Object
    Dim fldSpamDigest As Outlook.MAPIFolder

    ' from the default inbox to the parent which is your mailbox
    Set fldSpamDigest = outapp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Parent
    ' from the mailbox to a folder at the same level as the Inbox 
    Set fldSpamDigest = fldSpamDigest.folders("Spam Digests")

    ' or
    ' directly from the mailbox to a folder at the same level as the Inbox 
    'Set fldSpamDigest = outapp.GetNamespace("MAPI").folders("your email address").folders("Spam Digests")

    For Each olitem In fldSpamDigest.Items
        If dateDiff("d", olitem.CreationTime, Now) > 14 Then olitem.Delete                
    Next

    Set fldSpamDigest = Nothing
    Set olitem = Nothing
    Set outapp = Nothing

End Sub
Run Code Online (Sandbox Code Playgroud)