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

Power Automate中获取SharePoint替换后xlsx文件表格数据的方法咨询

解决方法

一、定位最新的目标xlsx文件

  1. 在Power Automate中添加**Get files (properties only)**动作,配置如下:

    • 站点地址:你的SharePoint站点URL
    • 库名称:目标文件所在库
    • 筛选查询:FileLeafRef eq '你的文件名.xlsx'(替换为实际文件名)
    • 排序依据:Modified desc
    • 顶级行数:1(仅获取最新版本的文件)
  2. 该动作会返回目标文件的ID字段,后续将用这个ID定位文件。

二、动态获取文件内的表格ID

添加Send an HTTP request to SharePoint动作,配置参数:

  • 站点地址:与上述SharePoint站点URL一致
  • 方法:GET
  • Uri:_api/web/lists/getbytitle('库名称')/items(@{outputs('Get_files_(properties_only)')?['body/value'][0]['ID']})/workbook/tables

    替换库名称为实际文档库名称,表达式@{outputs('Get_files_(properties_only)')?['body/value'][0]['ID']}会自动提取第一步获取的文件ID

  • Headers:添加Accept: application/json;odata=nometadata(简化返回的JSON结构,便于后续解析)

请求返回的JSON会包含文件内所有表格的信息,其中id字段即为表格ID,name是表格名称。若文件内仅有一个表格,直接取第一个结果即可;若有多个表格,可在Uri中添加筛选条件?$filter=name eq '你的表格名称'来精准定位。

三、用动态表格ID读取行数据

添加List rows present in a table动作,配置:

  • 站点地址:同前
  • 库名称:同前
  • 文件:选择第一步获取的文件(或直接用表达式@{outputs('Get_files_(properties_only)')?['body/value'][0]})
  • 表格:点击输入自定义值,输入表达式:
    @{outputs('Send_an_HTTP_request_to_SharePoint')?['body/value'][0]['id']}

    若按表格名称筛选,表达式同样取body/value[0]['id']即可

额外优化:VBA转xlsx的注意事项

确保VBA宏保存xlsx时保留原表格名称不变,这样后续也可直接通过表格名称定位,无需依赖ID:

Sub SaveAsXlsx()
    Dim srcPath As String
    Dim destPath As String
    
    srcPath = ThisWorkbook.FullName
    destPath = Replace(srcPath, ".xlsm", ".xlsx")
    
    ' 删除旧xlsx文件
    If Dir(destPath) <> "" Then
        Kill destPath
    End If
    
    ' 保存为xlsx并保留表格结构与名称
    ThisWorkbook.SaveAs Filename:=destPath, FileFormat:=xlOpenXMLWorkbook
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:52:38