如何扩展Excel PowerQuery中#shared变量下的函数集合?
核心限制说明
Excel PowerQuery的#shared全局环境是只读的,无法像Power BI Desktop那样通过自定义连接器直接注入函数——Power BI的连接器加载逻辑是其桌面端独有的,Excel并不支持这套机制。
可行的全局复用方案
1. 利用PowerQuery自定义函数目录
Excel的PowerQuery会自动加载特定目录下的自定义函数到#shared:
- 找到目录:
%AppData%\Microsoft\Power Query\Custom Functions - 将自定义函数保存为
.pq文件,文件名需遵循[命名空间].[函数名].pq格式,文件内容示例:Custom.MultiplyByTwo = (input as number) as number => input * 2; - 重启Excel后,打开PowerQuery编辑器,就能在
#shared里看到注册好的函数,所有查询都可直接调用。
2. 开发Office加载项(Office Add-ins)
通过Office JS框架开发PowerQuery相关加载项,可将自定义函数注册到Excel的PowerQuery全局环境:
- 借助Office JS的PowerQuery API,在加载项启动时完成函数注册
- 安装加载项后,函数会持久出现在
#shared中,支持跨文档复用
关于Expression.Evaluate的补充
你当前用Expression.Evaluate加载外部.pq文件的方式,仅能在当前查询会话中生效,关闭Excel后函数就会消失,无法实现全局复用——上面两种方案才是实现#shared持久化扩展的有效路径。
内容的提问来源于stack exchange,提问作者andr
相关产品推荐
相关产品推荐

