访问文件夹,在Outlook中使用VBA(Accessing folders in Outlook

2019-09-23 02:50发布

我使用下面的邮件移动到Outlook中的文件夹中。

Dim chemin() as String

chemin = Split(path, "/")
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = myNameSpace.Folders("LiveLink").Folders("Livelink HQE").Folders("Entreprise").Folders(chemin(1)).Folders(chemin(2)).Folders(chemin(3))

myEntryID = myFolder.EntryID
myEntryID = myFolder.StoreID

objMail.Move myNameSpace.GetFolderFromID(myEntryID, storeID)    

一切实际工作。 正如你所看到的,该文件夹位于成Livelink的。 而Livelink的服务器实际上是响应很慢,我不能做任何事情。

我担心的是有关使用.Folders()那么多次,而这将是快了很多做这样的事情.Folders("Livelink/root/folder1/folder2/") 但是,这不是明显的工作,而且由于.Folders命令需要来ping服务器的Livelink每次,它实际上需要整整10秒只执行这行代码(以及更深层次的是文件夹,时间越长,更是达到它)。

是否有任何其他的方式来直接访问特定的文件夹在Outlook中移动邮件? 我知道有一些对每个文件夹的一种展望ID的(甚至是那些在Livelink的),但我看不出有任何的方式来使用它。 我试过以下,但它不工作尚未:

Dim folder As MAPIFolder
Dim myNameSpace As Outlook.NameSpace
Set myNameSpace = Application.GetNamespace("MAPI")
Set folder = myNameSpace.GetFolderFromID(target, Application.GetNamespace("MAPI").Folders("LiveLink").storeID)

做GetFolderfromID时,这给了我一个错误()。 var这个target实际上是我想要的邮件复制到该文件夹的EntryID。

Answer 1:

根据官方文档,还有比你在做什么,除非你将需要多次找到该文件夹​​没有更好的办法。

通过MSDN建议的选择是获得从文件夹路径的文件夹对象 ,但这个基本上没有,你已经在做同样的事情。

问题是,该文件夹对象仅代表“代表了所有在特定子集的可用Outlook文件夹在文件夹树的一个级别 。”(强调)

一个可能的变通办法是使用NameSpace.GetFolderFromID ,但你需要知道EntryID ,以及可能的StoreID ,这通常意味着你必须要找到的文件夹第一反正。 但是你可以保存EntryIDStoreID为今后及时召回。

如果你想深入研究使用EntryId S和StoreID在这儿是开发商参考使用EntryIDs和StoreIDs工作 。



文章来源: Accessing folders in Outlook with VBA