使用VBA在Outlook 2010中分配文件夹权限

时间:2015-05-20 09:09:33

标签: vba outlook-vba

上午,

我正在尝试确定一种使用VBA更新Outlook 2010收件箱及其所有子文件夹的权限的方法。

我们拥有一个帐户,其中包含一些新用户需要访问的大量子文件夹。手动分配每个都需要几个小时,我正在寻找一个自动化过程,因为这将是一个重新安置的任务。

由于管理员的限制,我只能使用原生VBA。

这是可能的,还是我注定了几个小时的平凡重复指点和点击?

非常感谢

皮特

2 个答案:

答案 0 :(得分:0)

Outlook对象模型(在VBA中使用)不提供任何更改文件夹权限的功能。

您可以使用低级API - 扩展MAPI来访问权限。文件夹级别权限存储在文件夹中。您需要使用IMAPIFolder :: OpenProperty方法获取PR_ACL_TABLE属性值。或者您可以考虑使用该API的任何第三方包装器来简化开发过程。有关详细信息,请参阅Changes in Outlook 2010 folder permissions not shown in Active Directory

答案 1 :(得分:0)

由于您使用的是VBA,因此扩展MAPI是不可能的(您需要C ++或Delphi)。

如果使用Redemption是一个选项,则可以使用其RDOACL对象(由RDOFolder返回.ACL属性)来管理任何Exchange文件夹权限:

 set Session = CreateObject("Redemption.RDOSession")
 Session.MAPIOBJECT = Application.Session.MAPIOBJECT
 set Folder = Session.GetDefaultFolder(olFolderCalendar)

'make sure we get back an Exchange user
 set AddressEntry = Session.AddressBook.GAL.ResolveName("Pete")
 set ACE = Folder.ACL.Add(AddressEntry)
 ACE.Rights = ROLE_PUBLISH_EDITOR