Я использую следующее, чтобы переместить почту в папку в 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 необходимо каждый раз пинговать сервер Livelink, на самом деле выполнение этой строки кода занимает целых 10 секунд (и чем глубже папка, тем дольше она достигает Это).
Есть ли другой способ прямого доступа к определенной папке в Outlook для перемещения почты? Я знаю, что для каждой папки (даже в Livelink) есть какой-то идентификатор Outlook, но я не вижу способа его использовать. Я пробовал следующее, но пока не работает:
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(). Переменная target
на самом деле является EntryID папки, в которую я хочу скопировать почту.
Set folder
работает, но я получаю сообщение об ошибке Невозможно переместить элемент при выполненииobjMail.move folder
сейчас. - person dan   schedule 27.09.2012