在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