我正在为Outlook创建一个宏,用于处理由规则触发的指定文件夹中的电子邮件项目。我的Sub
例程设置子文件夹如下:
Set olSub = olMailbox.Folders("Customer").Folders("Requests").Folders("Open")
我希望能够将Sub
用于许多不同的文件夹,唯一的区别就是上面一行。
我的问题是如何将数组传递给我的Sub
,该数组会使用链式olSub
语句设置.Folders()
?请记住子文件夹的数量,因此数组的长度可能会有所不同。
期望的结果将是这样的:
Sub MainRoutine(olArr)
...
' Some sort of magic loop that sets olSub from olArr until,
olSub = olMailbox.Folders("Customer").Folders("Requests").Folders("Open")
...
End Sub
Sub OtherRoutine()
olArr = Array("Customer", "Requests", "Open")
MainRoutine olArr
End Sub
答案 0 :(得分:1)
试试这个:
Public Function GetFolder(FromFolderPath As String) As MAPIFolder
Dim arrPaths() As String
arrPaths = Split(FromFolderPath, "\")
Dim i As Integer
Dim objLoopFolder As MAPIFolder
Dim objNS As NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set objLoopFolder = objNS.Folders("My Mailbox Name")
For i = 0 To UBound(arrPaths)
Set objLoopFolder = objLoopFolder.Folders.Item(arrPaths(i))
Next
Set GetFolder = objLoopFolder
End Function
它需要一个文件夹路径,例如My Mailbox Name\First Folder\Sub Folder 1\Sub Folder 2
,但如果您确实需要它来获取数组,则可以轻松修改它。