我正在使用以下命令將郵件移動到Outlook中的文件夾。使用VBA訪問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中的特定文件夾來移動郵件?我知道每個文件夾都有一些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。
即使您認爲它應該,目標實際上可能不會保留EntryID。 EntryID可以更改。以下是我在答案中提供的最後一個鏈接的引用:重要的是要注意,無論何時在文件夾中創建項目,都會爲其分配新的EntryID。這意味着如果項目移動到不同的文件夾或項目被導出然後導入(甚至導入同一文件夾),則EntryID字段會發生更改。 http://msdn.microsoft.com/en-us/library/office/ff868618.aspx –
我剛剛注意到,我有LivelinkID而不是OutlookID(EntryID),這是不一樣的。我已經嘗試過使用有效的EntryID(使用OutlookSpy)和'Set folder'工作,但是現在執行'objMail.move文件夾'時出現錯誤_Unable來移動element_。 – dnLL
好吧,它現在正常工作,由於某種原因,我沒有足夠的權限在目標文件夾上寫入文件,現在沒關係。好吧,非常感謝你,我可以自己解決它,但有時當我們被困時,我們仍然需要有人向我們展示明顯的;-) – dnLL