如何为Power Query创建指向SharePoint文件的动态文件路径?
问题根因
- 通过OneDrive「添加快捷方式到OneDrive」功能生成的本地同步路径包含个人用户目录,属于用户私有映射路径,其他账号无访问权限
File.Contents函数仅支持本地磁盘、SMB/UNC共享路径,无法直接解析HTTPS开头的SharePoint在线路径,直接传入web路径会触发无效路径报错- 直接使用「从SharePoint文件夹」连接器时默认加载站点根目录全量文件列表,未加筛选条件时无法快速定位目标文件
方案一:复用现有相对路径逻辑(适配已写的单元格路径公式)
操作步骤
- 第一步:修正工作表中路径提取公式的符号问题,将原公式里的中文全角引号全部替换为英文半角引号,修正后公式如下:
=LEFT(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1),1)-1)
修正后公式会正确返回当前工作簿所在文件夹的HTTPS格式SharePoint路径,不会夹带个人用户名信息。
- 第二步:打开Power Query高级编辑器,将原有M代码替换为以下版本:
let // 读取单元格中存储的当前文件夹根路径 RootPath = Excel.CurrentWorkbook(){[Name="Filepath"]}[Content]{0}[Column1], // 拼接目标文件完整路径,注意不要重复添加斜杠 TargetFileAddress = RootPath & "The SharePoint File.xlsx", // 使用支持web路径的Web.Contents读取SharePoint文件,自动继承组织账号权限 Source = Excel.Workbook(Web.Contents(TargetFileAddress), null, true), // 定位目标数据表 tbl_Table = Source{[Item="tbl",Kind="Table"]}[Data] in tbl_Table
- 第三步:配置数据源权限避免刷新报错
- 打开Power Query编辑器的「文件」-「选项和设置」-「数据源设置」
- 找到对应SharePoint站点地址,选择「编辑权限」
- 将隐私级别设置为「组织」,凭据类型选择「组织账户」,用当前办公365账号完成登录验证即可。后续继任者打开文件时,仅需用自己有站点访问权限的365账号完成一次凭据验证,即可正常刷新数据,不会再出现路径权限问题。
方案二:直接使用SharePoint文件夹连接器(无需单元格存路径)
如果不想保留单元格路径公式,可按以下步骤配置,直接生成无个人信息的共享数据源路径:
- 选择「获取数据」-「从文件」-「从SharePoint文件夹」,输入目标SharePoint站点根地址,使用组织账户登录
- 在弹出的文件列表页点击「转换数据」,进入Power Query编辑器
- 筛选
Folder Path列,定位到目标工作簿存放的具体文件夹,再筛选Name列为需要读取的目标Excel文件名 - 点击对应行
Content列的Binary值,Power Query会自动解析Excel文件结构,选择需要提取的目标表加载即可 - 该方式生成的查询完全基于SharePoint站点的组织权限路径,所有对站点有访问权限的账号均可正常刷新。
注意:所有存放在SharePoint/OneDrive for Business的共享工作簿,不要使用OneDrive同步生成的本地路径作为Power Query数据源,必须使用HTTPS格式的站点路径搭配组织账户凭据配置,才能保证多用户访问时路径有效、权限正常继承。
内容的提问来源于stack exchange,提问作者Mintchip
相关产品推荐
相关产品推荐

