【问题标题】:Find mailfolder in Outlook with Redemption使用 Redemption 在 Outlook 中查找邮件文件夹
【发布时间】:2020-11-11 12:58:22
【问题描述】:

我尝试使用 VBA 和 Redemption 通过 FIND 方法在 Outlook 帐户(我使用多个帐户)中查找文件夹,但我无法让它工作。 Redemption 网页上有一个示例参考,这可能会有所帮助,但不幸的是该示例不存在。

到目前为止,这是我的代码:

Public Function FindFolderRDO(strCrit As String) As String

    If Not TempVars![appdebug] Then On Error GoTo Err_Proc
    
    Dim objRdoSession As Redemption.RDOSession
    Dim objRdoFolder As RDOFolder
    Dim strFoundFolder As String
    Dim objFoundFolder As RDOFolder
    Dim strFolderName As String

    Set objRdoSession = CreateObject("Redemption.RDOSession")
    objRdoSession.Logon
    objRdoSession.MAPIOBJECT = Outlook.Session.MAPIOBJECT
    
    strFolderName = "\\[mailbox name]\[foldername]\[foldername]" 'actual names removed
    
    Set objRdoFolder = objRdoSession.GetFolderFromPath(strFolderName)
    Debug.Print objRdoFolder.Parent.Name 'Prints the folder name

    Set objFoundFolder = objRdoFolder.Folders.Find("LIKE 'strCrit%' ") 'Does not work
    Debug.Print objFoundFolder.Name

    strFoundFOlder = objRdoFolder.Folders.Find("LIKE 'strCrit%' ") 'Does not work
    Debug.Print strFoundFOlder

Exit_Proc:
    On Error Resume Next
    Set objRdoFolder = Nothing
    Set objRdoSession = Nothing
    Set objFoundFolder = Nothing
    Exit Function

Err_Proc:
    Select Case Err.Number
        Case Else
            MsgBox "Error: " & CStr(Err.Number) & vbCrLf & _
                   "Desc: " & Err.Description & vbCrLf & vbCrLf & _
                   "Source: " & Err.Source & vbCrLf & _
                   "Library: " & Application.CurrentProject.Name & vbCrLf & _
                   "Module: Mod_RDO" & vbCrLf & _
                   "Function: FindFolderRDO" & vbCrLf, _
                   vbCritical, "Error"
    End Select
    Resume Exit_Proc
End Function

此函数的目的是查找在前 6 个位置上具有 6 个数字(例如“200332”)的唯一案例编号的子文件夹(最多可达 4 维深度)。如果未找到,此函数应提供 NULL 或找到的文件夹的完整路径和名称。 我可以使用单独的函数创建完整路径(调用父文件夹直到顶层),但可能在 Redemption 中有一个过程,例如我忽略的“完整路径”。 最终我想用这个功能来删除、移动或重命名邮箱文件夹。

我的主要问题是如何使用“Find(Filter)”方法。但也欢迎任何关于完整路径的回复。

谢谢!艺术。

【问题讨论】:

    标签: vba ms-access outlook-redemption


    【解决方案1】:

    您是否要查找名称以"strCrit" 开头的子订单?

    你快到了:

    Set objFoundFolder = objRdoFolder.Folders.Find("Name LIKE 'strCrit%' ")
    

    【讨论】:

    • 其实不是,strCrit是变量名。所以应该是 Set objFoundFolder = objRdoFolder.Folders.Find("Name LIKE '" & strCrit & "%' ") 但这仍然显示运行时错误 438 – Object does not support this property or method.
    • 您使用的是什么版本的 Redemption? RDOFolders.Find / FindNext / Restrict / Sort 方法是在 5.21 版本中添加的。
    • 啊,就是这个原因。显然我还在 5.17 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多