VBA - 从数组动态设置变量

时间:2014-03-10 16:10:05

标签: vba outlook-vba

我正在为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

1 个答案:

答案 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,但如果您确实需要它来获取数组,则可以轻松修改它。