【问题标题】:Cannot access AddressEntries Object from AddressList Object (Outlook VBA)无法从 AddressList 对象 (Outlook VBA) 访问 AddressEntries 对象
【发布时间】:2017-11-17 04:16:35
【问题描述】:

我试图在 Excel 中的 VBA 脚本中访问 AddressList 的 AddressEntries 属性。该列表是一个全局地址列表,其中包含存储在 Exchange Server 上的联系人。

当我尝试运行以下代码时,它给了我一个错误:

运行时错误“287”:应用程序定义或对象定义错误

这是我正在尝试执行的准系统代码。调试器在我尝试访问 AddressEntries 的那一行停止。

Public Sub Test()
    Dim appOL As Object
    Dim mapiNamespace As Object
    Dim GAL As AddressList, allGAL As AddressEntries

    Set appOL = GetObject(, "Outlook.Application")
    Set mapiNamespace = appOL.GetNamespace("mapi")
    Set GAL = mapiNamespace.AddressLists("Global Address List")
    Set allGAL = GAL.AddressEntries 'Debugger stops here
    MsgBox allGAL.Count  
End Sub

服务器上的某些设置是否能够阻止我访问列表中的条目?有没有其他方法可以获取条目?我的最终目标是从列表中获取与我在 excel 文件中的电子邮件地址列表相对应的条目,并检查每个条目是否在其电话号码属性中列出了工作电话号码。

编辑: Image of Outlook graying out my options

设置应用

Edit2:这仍然在第二行给我同样的错误

Set appOL = CreateObject("Outlook.Application")
Set oGAL = appOL.GetNamespace("MAPI").AddressLists("Global Address List").AddressEntries

【问题讨论】:

  • 在您运行代码时 Outlook 是否提示访问? Outlook 可能会阻止“程序访问”,从而给您带来错误。 Here 是一篇关于启用访问的文章,您可以尝试一下。
  • 你看this answer了吗?它似乎显示它有点不同。
  • @Alex 好像你在那里做某事。我的管理员似乎已将与编程访问混淆的选项显示为灰色(请参阅上面有问题的编辑和图像)
  • @PeterT 我尝试了您链接中的代码(请参阅问题的编辑),但第二行发生了同样的错误。我可以检索全局地址列表,但是当我放入“.AddressEntries”内容时,我会立即收到错误
  • @Alex 好酷。如果您将您的评论作为答案发表,我会投赞成票并用绿色对勾标记

标签: excel vba outlook


【解决方案1】:

您的防病毒软件似乎将访问视为潜在威胁 - 毕竟它是用于访问您的数据的编码自动化。

与您的管理员联系,看看您是否可以启用信任中心中显示的选项之一(打开 Outlook 2010,转到“文件/选项/信任中心”菜单项,然后单击“信任中心设置”对话框右侧的按钮),最好是第一个按钮。

Here 是一篇关于启用访问的文章,您可以尝试一下。

【讨论】:

  • 是的,我的管理员似乎不允许对 Outlook 中的数据进行编程访问。我必须弄清楚如何获得访问权限,或者以其他方式完成我的任务。
猜你喜欢
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2017-05-23
相关资源
最近更新 更多