【发布时间】: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 好酷。如果您将您的评论作为答案发表,我会投赞成票并用绿色对勾标记