如何在Power Query M代码中将SharePoint上的.xlsm文件设为数据源?
Power Query中没有xlsm.Document这个内置函数,处理.xlsm(启用宏的Excel工作簿)需要用Excel.Workbook函数解析Web.Contents获取的二进制文件内容,以下是具体的代码修改方案:
基础版代码(加载整个工作簿的表和工作表列表)
let Source = Web.Contents("https://你的SharePoint站点地址/文件路径/目标文件.xlsm"), // 解析二进制内容为Excel工作簿,第二个参数启用宏工作簿支持,第三个参数延迟数据类型检测 ExcelWorkbook = Excel.Workbook(Source, true, true) in ExcelWorkbook
进阶版代码(直接加载指定工作表的数据)
如果需要直接加载某个特定工作表(比如名为"销售数据"的工作表),可以扩展代码:
let Source = Web.Contents("https://你的SharePoint站点地址/文件路径/目标文件.xlsm"), ExcelWorkbook = Excel.Workbook(Source, true, true), // 定位到指定工作表,Item填写工作表名称,Kind指定为"Sheet" TargetSheet = ExcelWorkbook{[Item="销售数据", Kind="Sheet"]}[Data] in TargetSheet
关键注意事项
- 替换URL:把代码中的URL替换为SharePoint上.xlsm文件的直接访问链接,可通过SharePoint文件页面的「复制链接」功能获取,确保链接权限允许当前账号访问。
- 权限配置:若运行代码时出现权限错误,需在Power BI的「数据源设置」中配置对应身份验证方式(通常是OAuth 2.0或Windows身份验证,匹配SharePoint的权限体系)。
- 参数说明:
Excel.Workbook的第二个参数设为true是为了兼容启用宏的工作簿,第三个参数true表示延迟数据类型检测(先以文本格式加载所有列,后续可手动调整),若需要自动检测类型可改为false。
内容的提问来源于stack exchange,提问作者Rebecca
相关产品推荐
相关产品推荐

