使用VBA提取Microsoft Exchange自定义/扩展属性?

时间:2017-02-14 16:23:09

标签: excel-vba outlook exchange-server-2010 vba excel

我正在尝试使用VBA从Outlook.ExchangeUser对象中提取一些属性。除了一些似乎使用Exchange extended attributes

存储的数据外,我可以提取我需要的大部分内容

问题:

  1. 是否可以使用VBA提取扩展属性?
  2. 如果是这样,怎么样?
  3. 以下是一些代码,可以了解我正在做什么(这是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获得了架构,但我并不认为这是正确的。当我尝试它时,我没有收到错误,它只是空回来(没有拉动)。我试着找一个属性标签列表,所以我可以尝试别人,但我似乎无法找到它们。如果有人知道从哪里获得那些可能也会有所帮助。

    感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来访问我需要的东西。基本上,一旦找到了正确的属性标签,我就最终使用了属性访问器。在我的情况下(对于扩展属性#7),正确的是“0x8033001F”。所以我用过:

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

对于有类似需求但可能具有不同扩展属性的任何人,我建议下载并安装OutlookSpy(或类似工具)。这是我能够发现正确的属性标记的唯一方法,因为我无法通过浏览Microsoft文档找到它。

希望这有助于某人!