2017-06-14 61 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