2017-02-14 46 views
2

我想從使用VBA的Outlook.ExchangeUser對象中拉出一些屬性。我可以拉的大部分我所需要的,除了一些數據似乎使用Exchange extended attributes使用VBA拉取Microsoft Exchange自定義/擴展屬性?

問題存儲:

  1. 是否有可能拉使用VBA擴展屬性?
  2. 如果是這樣,怎麼樣?

下面是一些代碼來提供有關我在做什麼的想法(這是Microsoft Excel文件的VBA代碼):

... 
Dim myOlApp As Outlook.Application 
Dim addrList As AddressList 
Dim exchUser As Oulook.ExchangeUser 
... 
Set myOlApp = CreateObject("Outlook.Application") 
Set addrList = myOlApp.GetNamespace("MAPI").addressLists("SOMELIST") 
Set exchUser = addrList.addressEntries("doe, john").GetExchangeUser 
... 

然後我就可以使用Exchange用戶對象拉屬性。即...

MsgBox ("User company name: " + exchUser.CompanyName) 

如果我嘗試做一些像上面拉擴展屬性,我得到這樣一個錯誤「對象不支持此屬性或方法」。我曾嘗試以下無濟於事:

exchUser.msExchangeAttributeX '(where X is a number from 1-15) 
exchUser.ms-Exch-Extension-Attribute-X 
exchUser.CustomAttributeX 
exchUser.ExtensionCustomAttributeX 

我還使用試圖PropertyAccessor接口...

exchUser.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x802D001E") 

我的模式從here但我還不能肯定這是正確的。當我嘗試時我沒有遇到任何錯誤,它只是變空了(沒有任何東西被拉出來)。我試圖尋找一個屬性標籤的列表,所以我可以嘗試別人,但我似乎無法找到它們。如果有人知道哪裏可以得到那些也可以幫助。

任何幫助表示讚賞。謝謝!

回答

0

我找到了一種方法來訪問我所需要的東西。基本上,我最終使用一個屬性訪問器,一旦我找到了正確的屬性標記。在我的情況下(對於擴展屬性#7),正確的是「0x8033001F」。所以我用:

exchUser.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x8033001F") 

對於具有類似需要,但也許不同的擴展屬性的人,我建議下載和安裝OutlookSpy(或類似工具)。這是我能夠發現正確財產標籤的唯一方式,因爲我無法通過瀏覽Microsoft文檔來找到它。

希望這可以幫助別人!

相關問題