【发布时间】: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