通过描述其路径的字符串设置文件夹对象



在MS Outlook(2016)中,我正在研究VBA程序,以更快地存档某些,单独选择的电子邮件到我的电子邮件存档中的某些文件夹中。

我有一个过程,当我手动处理目标文件夹时可以解决问题:

'[...]
Dim MoveToFolder As Outlook.MAPIFolder
'[...]
Set MoveToFolder = ns.Folders("Archive").Folders("Projekte-Archiv").Folders("P03_NetRef")
'[...]

使用此过程知道哪个文件夹要将预先选择的电子邮件移至。

现在我的问题:

我试图通过字符串变量设置" movetofolter"文件夹对象提供所有必要的数据。

我为什么要这样做:将文件夹数据作为字符串变量移交,我可以在我想要的许多层次结构级别中使用相同的过程。

这是我想到的,使用CTYPE函数:

'[...]
Dim MoveToFolder As Outlook.MAPIFolder
'[...]
Set MoveToFolder = CType("ns.Folders(""Archive"").Folders(""Projekte-Archiv"").Folders(""P03_NetRef"")", Outlook.MAPIFolder)
'[...]

(当然,这个想法是通过变量插入字符串的下一步,而不是像示例那样简单写作。)

这不起作用。对象类型" Outlook.mapifolder"会导致编译时发生错误("未找到方法或数据对象")。

以后的Insight

正如我稍后所理解的,ctype()函数在VBA中不可用(而不是vb.net)。

未经测试:

Set MoveToFolder = GetFolder(ns, "Archive|Projekte-Archiv|P03_NetRef")

解析路径的功能:

Function GetFolder(root, fpath)
    Dim f As Object
    Dim arr, i
    arr = Split(fpath, "|")
    For i = 0 To UBound(arr)
        If i = 0 Then
            Set f = root.Folders(arr(i))
        Else
            Set f = f.Folders(arr(i))
        End If
    Next i
    Set GetFolder = f
End Function