如果我运行此VBA子例程:
Public Sub ViewOutlookGlobalAddressListEntries()
Dim olApp As Object
Dim olNS As Object
Dim olGAL As Object
Dim olEntries As Object
Dim olMember As Object
Set olApp = CreateObject("Outlook.Application")
Set olNS = olApp.GetNamespace("MAPI")
Set olGAL = olNS.GetGlobalAddressList
Set olEntries = olGAL.AddressEntries
' Loop through and display entries
For Each olMember In olEntries
Debug.Print olMember
Next olMember
End Sub
我在全球地址列表中看到了所有电子邮件地址名称的列表。但是,我不确定这是从Exchange服务器还是从全局地址列表的本地缓存副本(位于C:\Users\<my username>\AppData\Local\Microsoft\Outlook
)检索这些名称。
我想每天运行此子例程的变体,以便我可以使用对全局地址列表的任何更改来更新数据库。但是,我不知道此子例程是从Exchange检索实时数据还是从本地缓存的全局地址列表副本中检索旧数据。
如果是从我的本地缓存副本中检索,在将数据放入数据库之前,有没有办法使用VBA更新本地缓存副本? (要手动更新它,我会转到Outlook 2013,单击文件&gt;帐户设置&gt;下载地址簿)
更新
好吧,我拔掉了电脑的网络连接并运行了子程序。它仍然工作正常,因此它看起来像GetGlobalAddressList从我的本地缓存的全局地址列表副本中检索。现在我只需要弄清楚如何在数据库中更新这些值之前以编程方式更新地址列表的本地缓存副本
答案 0 :(得分:0)
如果您的配置文件已缓存(使用OST文件),则GAL将存储在本地。如果它处于联机状态(未选中“使用缓存模式”),则所有数据都来自服务器。
请注意,从服务器下载最新的GAL更改可能需要最多24小时的Outlook。