【发布时间】:2020-05-14 00:59:21
【问题描述】:
我有两个日历,一个是我的,另一个是共享的。两者都在前景中打开,如下所示。
如何获取选定的约会日历的电子邮件地址?
我看到AppointmentItem 有GetOrganizer 来查找谁创建了约会,但我没有找到任何关于约会的日历用户的方法或属性...
所以我尝试Application.ActiveExplorer.CurrentFolder 获取所选文件夹,然后获取AdressEntry,但我无法获取文件夹的存储,因为它是共享日历(然后folder.store 返回 null)。
按照 Dmitry 的建议 there,我做到了:
Dim appointment_item As Outlook.AppointmentItem
Dim PR_MAILBOX_OWNER_ENTRYID as String
Dim mapiFolder As Outlook.MAPIFolder
Dim folderStore As Outlook.Store
Dim mailOwnerEntryId As String
Dim entryAddress As Outlook.AddressEntry
Dim smtpAdress As String
PR_MAILBOX_OWNER_ENTRYID = "http://schemas.microsoft.com/mapi/proptag/0x661B0102"
appointment_item = Application.ActiveExplorer.Selection.Item(1)
mapiFolder = appointment_item.Parent
folderStore = mapiFolder.Store
mailOwnerEntryId = folderStore.PropertyAccessor.GetProperty(PR_MAILBOX_OWNER_ENTRYID)
entryAddress = Application.Session.GetAddressEntryFromID(mailOwnerEntryId)
smtpAdress = entryAddress.GetExchangeUser.PrimarySmtpAddress
MsgBox(smtpAdress)
问题是我无法获得共享文件夹的.Store,如 MS 文档中所写的 here。
此属性返回一个 Store 对象除非文件夹是共享文件夹(由 NameSpace.GetSharedDefaultFolder 返回)。在这种情况下,一个用户已将默认文件夹的访问权限委托给另一个用户;对 Folder.Store 的调用将返回 Null。
【问题讨论】:
-
由于您之前的编辑是在 VB.Net 中执行此操作,因此我删除了 VBA 标记。
-
我很累,正如您的线程 Dmitry 中所表达的那样,但无法接近我需要做的事情......当我做
.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661B0102")时,它说属性未知或找不到。跨度>