打开 SharePoint 列表的链接表时,访问会冻结

症状

在 Microsoft Access 桌面数据库中,当您尝试打开链接到 SharePoint 列表的表时,Access 将停止响应。

原因

如果尝试在 Access 中打开现有链接表的用户没有包含列表的 SharePoint 网站的本地存储凭据,则会出现此问题。 存储的凭据可以是 Windows 凭据管理器中的凭据,也可以是 Internet Explorer 中的持久性 Cookie。

解决方案

要解决此问题,请使用下列方法之一。

方法 1:添加 EnableLegacyListAuth 注册表项

注意对于Access 2016,必须安装即点即用版本 1804 (内部版本 9226.2114) 或 MSI 版本 (内部版本 16.0.4690.1000) 或更高版本才能使用此方法。 若要添加 EnableLegacyListAuth 注册表项,请执行以下步骤:

  1. 打开注册表编辑器,找到并选择以下注册表子项:

    对于 32 位 Windows 上的 32 位 Office 或 64 位 Windows 上的 64 位 Office

    • 对于 Access 2013

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\List

    • 对于Access 2016

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\List

    对于 64 位 Windows 上的 32 位 Office

    • 对于 Access 2013

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\List

    • 对于Access 2016

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\List

  2. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”

  3. 键入 EnableLegacyListAuth,然后按 Enter

  4. 右键单击“ EnableLegacyListAuth”,然后单击“ 修改”。

  5. 在“数值数据”框中,键入 1,然后单击“确定”

  6. 找到以下注册表项:

    • 对于 Access 2013

      HKCU\SOFTWARE\Microsoft\Office\15.0\Common\Identity

    • 对于Access 2016

      HKCU\SOFTWARE\Microsoft\Office\16.0\Common\Identity

  7. 确保 EnableADAL 的值为 0

  8. 退出注册表编辑器。

方法 2:刷新列表

若要刷新列表,请执行以下步骤:

  1. 打开 Windows 任务管理器,选择“Microsoft Access”,然后单击“ 结束任务”。
  2. 重新打开数据库。
  3. 右键单击 Access 中的链接表,然后选择“ 更多选项>刷新列表”。
  4. 使用凭据登录。

若要重新链接列表,请执行以下步骤:

  1. 打开 Windows 任务管理器,选择“Microsoft Access”,然后单击“ 结束任务”。
  2. 重新打开数据库,并创建新模块。
  3. 在 VBA 代码中,对链接表使用 TableDefs 集合的 RefreshLink 方法:
Public Function TableRelinkSample()
           CurrentDb.TableDefs("<TableName>").RefreshLink
     End Function

注意 如果有多个链接的 SharePoint 列表,则只需为其中一个表调用 RefreshLink 一次。

  1. 从 AutoExec 宏或数据库中的其他启动代码调用 TableRelinkSample () 函数。

    TableDef.RefreshLink 方法 (DAO)