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

Pull Microsoft Exchange custom / extended attributes using VBA?

我正在尝试使用 VBA 从 Outlook.ExchangeUser 对象中提取一些属性。我可以提取大部分我需要的东西,除了一些似乎使用 Exchange extended attributes

存储的数据

问题:

  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 得到了架构,但我不确定它是否正确。当我尝试这样做时我没有收到错误,它只是返回空的(没有被拉出)。我试图寻找 属性 标签的列表,以便我可以尝试其他标签,但我似乎找不到它们。如果有人知道在哪里可以买到这些也许也能有所帮助。

感谢任何帮助。谢谢!

我找到了一种访问所需内容的方法。一旦找到正确的 属性 标签,我基本上最终使用了 属性 访问器。在我的例子中(扩展属性#7)正确的是“0x8033001F”。所以我用了:

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

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

希望这对某人有所帮助!