2012-09-27 62 views
2

我正在使用以下命令將郵件移動到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。

+1

即使您認爲它應該,目標實際上可能不會保留EntryID。 EntryID可以更改。以下是我在答案中提供的最後一個鏈接的引用:重要的是要注意,無論何時在文件夾中創建項目,都會爲其分配新的EntryID。這意味着如果項目移動到不同的文件夾或項目被導出然後導入(甚至導入同一文件夾),則EntryID字段會發生更改。 http://msdn.microsoft.com/en-us/library/office/ff868618.aspx –

+0

我剛剛注意到,我有LivelinkID而不是OutlookID(EntryID),這是不一樣的。我已經嘗試過使用有效的EntryID(使用OutlookSpy)和'Set folder'工作,但是現在執行'objMail.move文件夾'時出現錯誤_Unable來移動element_。 – dnLL

+0

好吧,它現在正常工作,由於某種原因,我沒有足夠的權限在目標文件夾上寫入文件,現在沒關係。好吧,非常感謝你,我可以自己解決它,但有時當我們被困時,我們仍然需要有人向我們展示明顯的;-) – dnLL

回答

3

根據官方文檔,沒有比您所做的更好的方法,除非您需要多次查找文件夾。

MSDN建議的選項是obtain the folder object from the folder path,但是這基本上與你已經做的事情是一樣的。

的問題是Folder Object僅代表「代表了所有在特定子集的可用Outlook文件夾在一個文件夾樹的水平。」(強調)

一個可能的方法將使用NameSpace.GetFolderFromID,但爲此,您需要知道EntryID,並可能需要知道StoreID,這通常意味着您必須首先找到該文件夾​​。但是,您可以保存EntryIDStoreID以供將來立即調用。

如果您想深入研究使用EntryId s和StoreID s,這裏是開發人員參考Working with EntryIDs and StoreIDs

+0

非常感謝你的回答。我現在覺得很愚蠢,因爲我確實知道EntryID,並且據我所知StoreID始終是相同的。文件夾實際上是在另一個腳本中創建的。我會看看它,我的問題可能會解決。 – dnLL

+0

剛剛更新我原來的帖子,我一直在嘗試,它還沒有工作。 – dnLL