2017-02-14 11 views
2

Я пытаюсь вытащить некоторые свойства из объекта Outlook.ExchangeUser с помощью VBA. Я могу вытащить большинство из того, что мне нужно, за исключением некоторых данных, которые, кажется, должны быть сохранены с помощью Exchange extended attributesВытащить пользовательские/расширенные атрибуты Microsoft Exchange с помощью VBA?

Вопросы:

  1. Можно ли тянуть расширенные атрибуты с помощью VBA?
  2. Если да, то как?

Вот код, чтобы дать представление о том, что я делаю (это код VBA в файле Microsoft Excel):

... 
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

Я нашел способ получить доступ к тому, что мне было нужно. В основном я закончил использование Access Accessor, когда нашел правильный тег свойства. В моем случае (для атрибута расширения # 7) правильным был «0x8033001F». Так что я использовал:

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

Для любого, имеющего подобную необходимость, но, возможно, другой атрибут расширения, то я предлагаю загрузки и установки OutlookSpy (или аналогичного инструмента). Это единственный способ найти правильный тег свойства, поскольку я никогда не мог его найти, просматривая документы Microsoft.

Надеюсь, это поможет кому-то!