无管理员权限能否使用Redemption.dll?求Outlook VBA访问替代方案
在无管理员权限的情况下在Outlook VBA中使用Redemption.dll
不需要通过regsvr32.exe注册Redemption.dll,你可以通过以下两种方式在Outlook VBA中直接使用它:
方法1:使用RedemptionLoader进行后期绑定
Redemption自带的RedemptionLoader对象支持直接加载未注册的DLL文件,步骤如下:
- 将下载的
redemption.dll放到你有权限访问的本地路径(比如个人文档文件夹) - 在VBA代码中通过
CreateObject调用RedemptionLoader创建Redemption核心对象,示例代码:
Sub UseRedemptionWithoutRegistration() Dim rdoSession As Object ' 加载指定路径的Redemption.dll并创建RDOSession对象 Set rdoSession = CreateObject("Redemption.RedemptionLoader").NewObject( _ "Redemption.RDOSession", _ "C:\Users\你的用户名\Documents\redemption.dll" ' 替换为你的DLL实际路径 ) ' 关联Outlook会话 rdoSession.MAPIOBJECT = Application.Session.MAPIOBJECT ' 示例:获取默认收件箱并输出邮件数量 Dim rdoInbox As Object Set rdoInbox = rdoSession.GetDefaultFolder(6) ' 6对应olFolderInbox常量 MsgBox "收件箱邮件数量:" & rdoInbox.Items.Count ' 释放对象 Set rdoInbox = Nothing Set rdoSession = Nothing End Sub
如果DLL和Outlook VBA项目在同一目录,或已在系统PATH中,可省略路径参数,直接写:
Set rdoSession = CreateObject("Redemption.RedemptionLoader").NewObject("Redemption.RDOSession")
方法2:纯后期绑定(部分版本支持)
部分Redemption版本支持直接通过CreateObject创建核心对象,前提是DLL在可访问路径下:
Sub UseRedemptionLateBinding() Dim rdoSession As Object Set rdoSession = CreateObject("Redemption.RDOSession") rdoSession.MAPIOBJECT = Application.Session.MAPIOBJECT ' 后续操作同方法1 Dim rdoInbox As Object Set rdoInbox = rdoSession.GetDefaultFolder(6) MsgBox "收件箱邮件数量:" & rdoInbox.Items.Count Set rdoInbox = Nothing Set rdoSession = Nothing End Sub
注意事项
- 必须保证
redemption.dll的位数与Outlook一致(32位Outlook用32位DLL,64位Outlook用64位DLL),否则会出现加载失败错误 - 测试代码时,直接在Outlook VBA编辑器中运行即可,无需管理员权限
内容的提问来源于stack exchange,提问作者user3258911
相关产品推荐
相关产品推荐

