root上的文件夹,而不是Inbox下的文件夹会生成错误:尝试的操作失败。无法找到对象

时间:2018-03-23 05:14:43

标签: vba outlook-vba outlook-2016

我在root上创建了一个文件夹,而不是在Inbox下。移动到根文件夹的语法是什么?

我收到错误:

  

尝试的操作失败

     

无法找到对象

调试指向以下行myRestrictItems(i).Move myFolder.folders("Business")

Option Explicit

Public Sub Example()

    Dim myNamespace As Outlook.NameSpace
    Dim myFolder As Outlook.MAPIFolder
    Dim myRestrictItems As Outlook.Items
    Dim myItems As Outlook.Items
    Dim myItem As Object
    Dim i As Long
    Dim Filter As String
    Dim Msg As String


    Set myNamespace = Application.GetNamespace("MAPI")
    Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myItems = myFolder.Items

    Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:datereceived" & _
                   Chr(34) & " >= '01/01/2018' And " & _
                   Chr(34) & "urn:schemas:httpmail:datereceived" & _
                   Chr(34) & " < '23/03/2018' And " & _
                   Chr(34) & "urn:schemas:httpmail:fromname" & _
                   Chr(34) & "Like '%Jayakumar Krishnamoorthy%'"


    Set myRestrictItems = myItems.Restrict(Filter)

    For i = myRestrictItems.Count To 1 Step -1
        myRestrictItems(i).Move myFolder.folders("Business")

    'Msg = myRestrictItems.Count & " Items in " & myFolder.Name & " Folder"

    'MsgBox (Msg)

    Next

End Sub

2 个答案:

答案 0 :(得分:0)

在文件夹中快速循环到debug.print他们的名字以及您可能觉得有用的任何其他属性。显示的名称和内部名称可能不同。

答案 1 :(得分:0)

正确的语法应为

myRestrictItems(i).Move myNamespace.Folders("Business")

同样将你msgbox移到循环之外,示例

Set myRestrictItems = myItems.Restrict(Filter)

Msg = myRestrictItems.Count & " Items in " & myFolder.Name & " Folder, Move it?"

If MsgBox(Msg, vbYesNo) = vbYes Then
    For i = myRestrictItems.Count To 1 Step -1
        myRestrictItems(i).Move myNamespace.Folders("Business")
    Next
End If