Power Automate中获取SharePoint替换后xlsx文件表格数据的方法咨询
解决方法
一、定位最新的目标xlsx文件
在Power Automate中添加**Get files (properties only)**动作,配置如下:
- 站点地址:你的SharePoint站点URL
- 库名称:目标文件所在库
- 筛选查询:
FileLeafRef eq '你的文件名.xlsx'(替换为实际文件名) - 排序依据:
Modified desc - 顶级行数:1(仅获取最新版本的文件)
该动作会返回目标文件的
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
相关产品推荐
相关产品推荐

