You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过VBA/ADO用SQL更新SharePoint List记录?

操作SharePoint List的VBA SQL方案

可以通过ADO结合SharePoint的OLE DB驱动,保留你习惯的「构建SQL字符串+Execute执行」的操作方式,但需要调整连接配置和适配SQL语法差异。

核心实现步骤

  • 配置连接字符串
    使用Microsoft.ACE.OLEDB.12.0驱动连接SharePoint List,示例字符串:

    "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://你的SharePoint站点URL;LIST={列表GUID};"
    
    • IMEX=0:允许写入操作(设为1则只读)
    • RetrieveIds=Yes:启用SharePoint列表的ID字段访问
    • 列表GUID可在SharePoint列表的「设置」→「列表设置」→「列表信息」中获取(格式为8-4-4-4-12的字符串)
  • 支持的SQL操作
    你可以用熟悉的SELECT/INSERT/UPDATE/DELETE语句操作列表,但需注意:

    • 字段名要使用SharePoint列表的内部名称(而非显示名称,避免空格、特殊字符导致的语法错误)
    • 部分系统字段(如Created、Modified)无法通过SQL修改
      示例更新代码:
    Dim conn As ADODB.Connection
    Dim sqlUpdate As String
    
    Set conn = New ADODB.Connection
    ' 替换为你的站点URL和列表GUID
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=https://contoso.sharepoint.com/sites/team;LIST={12345678-ABCD-EFGH-IJKL-1234567890AB};"
    
    ' 构建SQL更新语句,注意字段用内部名称
    sqlUpdate = "UPDATE 列表内部名称 SET 标题字段内部名称='更新内容' WHERE ID=5"
    conn.Execute sqlUpdate, , adCmdText + adExecuteNoRecords
    
    conn.Close
    Set conn = Nothing
    
  • 适配语法差异

    • 避免使用Access专属SQL函数(如Nz、DLookup),替换为标准SQL函数(如ISNULL)
    • 批量操作时建议拆分任务,避免因SharePoint接口限制导致超时
    • 权限依赖当前Windows账号的SharePoint列表编辑权限,无需额外输入凭据

内容的提问来源于stack exchange,提问作者Chris Melville

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:17:12