如何导出.xlsm文件内存储的自定义Ribbon并实现迁移使用?
自定义Ribbon导出为.xlam及跨文件调用方案
完全可以将你现有的自定义Ribbon导出为.xlam格式的加载宏文件,具体操作步骤如下:
导出为.xlam加载宏操作步骤
- 打开原.xlsm文件,按下
Alt + F11唤出VBA编辑器,将所有和Ribbon按钮绑定的宏代码、Ribbon回调相关代码全部复制备份,不要遗漏任何依赖的自定义函数 - 使用Office自定义UI编辑器打开原.xlsm文件,右键点击文件列表中的当前文件名,选择「导出自定义UI」,将导出的.xml格式配置文件保存到本地
- 新建一个空白Excel文件,直接点击「文件」-「另存为」,保存类型选择「Excel 加载宏(*.xlam)」,自定义文件名后保存到本地,记住文件存储路径
- 用Office自定义UI编辑器打开刚才保存的.xlam文件,右键点击文件名选择「导入自定义UI」,导入之前导出的Ribbon配置.xml文件,保存后关闭编辑器
- 重新打开.xlam文件,按下
Alt + F11打开VBA编辑器,将之前备份的所有宏代码粘贴到.xlam文件的新增模块中,保存文件 - 要全局启用该自定义Ribbon的话,打开任意Excel文件,依次点击「文件」-「选项」-「加载项」,底部「管理」下拉框选择「Excel加载项」后点击「转到」,在弹出的窗口中勾选你保存的.xlam文件,确认后重启Excel,该自定义Ribbon就会在所有打开的Excel文件中生效
其他跨文件调用方案
如果你不想使用全局加载宏的方式,也可以采用以下方案实现仅在指定.xlsm文件中调用该Ribbon:
- 单文件复用:将原文件的Ribbon配置通过Office自定义UI编辑器导出后,直接导入到目标.xlsm文件中,同时把绑定的宏代码复制到目标文件的VBA模块内即可正常使用
- 代码共享复用:先将所有宏代码保存为.xlam加载宏并启用,之后在目标.xlsm文件导入Ribbon配置时,将按钮的宏绑定路径修改为指向.xlam加载宏内的对应宏,无需在每个目标文件中重复存储宏代码
注意事项:如果原Ribbon绑定的宏代码中存在硬编码原.xlsm文件名、引用原文件内部固定单元格数据的逻辑,需要提前修改为通用逻辑,否则跨文件调用时会出现运行错误。
内容的提问来源于stack exchange,提问作者nl998
相关产品推荐
相关产品推荐

