2017-06-14 78 views
0

我试图访问Excel中的VBA脚本内的AddressList的AddressEntries属性。该列表是包含存储在Exchange Server上的联系人的全局地址列表。无法从AddressList对象(Outlook VBA)访问AddressEntries对象

当我尝试虽然运行下面的代码,它给了我一个错误:

Run-time error '287': Application-defined or object-defined error

这里是我想执行的准系统代码。调试器停止在我尝试访问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 
+0

在运行代码时Outlook是否提示访问? Outlook有可能阻止“程序化访问”,从而给您带来错误。 [这里](https://social.technet.microsoft.com/Forums/ie/en-US/64c14bd3-0e7f-4ba9-b2bd-26cf62ce5883/how-to-stop-outlook-security-message-a-program- is-trying-to-access-email-addresses-allow-access?forum = outlook)是一篇关于启用访问的文章,您可以试试。 – Alex

+0

你看过[这个答案](https://stackoverflow.com/a/18406935/4717755)吗?这似乎表明它有点不同。 – PeterT

+0

@Alex好像你在那里。我的管理员似乎已将选项弄得灰白,以致于无法编程访问(请参阅上面的编辑和图像) – takanuva15

回答

2

好像您的防病毒治疗的访问是潜在的威胁 - 这是一个编码自动化,用于访问您的数据。

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

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

+0

是的,这看起来像我的管理员不允许通过编程访问Outlook中的数据。我必须弄清楚如何访问或以其他方式完成我的任务。 – takanuva15