2015-07-20 52 views
0

我想將所有「自動完成地址」添加到新的聯繫人文件夾,但我無法獲得這些地址。我稱之爲「自動完成地址」是您向某人發送電子郵件時保存的地址,並且您在新電子郵件的「收件人」字段中再次鍵入該地址。在VBA中獲取Outlook的自動完成地址列表

我知道我可以通過使用

Set objOutlook = CreateObject("Outlook.Application") 
Set myNameSpace = objOutlook.GetNamespace("MAPI")  
Set GAL = myNameSpace.AddressLists("Offline Global Address List") 

得到所有的全局地址列表,但我怎樣才能讓我的自動完成地址?

我使用Outlook 2010,我的帳戶是一個Exchange帳戶。

謝謝你的幫助和你的時間。

編輯

我的完整代碼:

Set objOutlook = CreateObject("Outlook.Application") 
Set myNameSpace = objOutlook.GetNamespace("MAPI") 
Set folder = myNameSpace.GetDefaultFolder(OlDefaultFolders.olFolderInbox) 
Set storage = folder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass) 
Set propacc = storage.PropertyAccessor 
Set got = propacc.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102") 

問題:有是空的...

回答

0

自動完成(暱稱)流被存儲在一個隱藏的(相關)消息與收件箱文件夾中的「IPM.Configuration.Autocomplete」消息類。其格式記錄在https://msdn.microsoft.com/en-us/library/office/ff625288.aspx。您可以使用MAPIFolder.GetStorage訪問該消息。

如果使用Redemption是一個選項,它通過RDOStore/RDOSession公開暱稱。 Nicknames集合。

另請注意,對於Outlook VBA,您確實需要創建Outlook.Application對象的實例,您已經擁有指向該對象的內部應用程序變量。

+0

謝謝你的回答。不幸的是,我無法使用兌換圖書館。有沒有辦法提取存儲對象的暱稱? – SpaceDev

+0

是的,您需要解析隱藏消息中存儲在0x7C090102屬性中的數據。 –

+0

好吧,我試過 'Set propacc = storage.PropertyAccessor' and'Set got = propertyAcc.GetProperty(「http://schemas.microsoft.com/mapi/proptag/0x7C090102」)' 但它似乎並不工作(獲得的變量是空的)。我如何獲取和解析數據? – SpaceDev

0

代替

Set got = propertyAcc.GetProperty(yadayada) 

不要使用集...只是

got = propertyAcc.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102") 

這會給文本流中使用的字節從零開始的數組。
了(0)= 13 得到(1)= 240 等等...

從那裏,你可以分析每個字節來獲取文本...但它是非常非常難看解析它所有這一切,當救贖爲你做。事實上,如果你在這篇文章中得到了這麼多,那麼你可能已經認識到,爲了達到這個目的,如何使用Redemption比創建自己的解析器更好。

相關問題