如何通过脚本将.xll插件永久添加到Excel的可用加载项列表中
XLL插件永久添加到Excel加载项的解决方案
问题原因
你之前使用的RegisterXLL方法仅对当前运行的Excel实例临时生效,不会写入持久化配置,因此重启Excel后加载项就会消失,也不会出现在加载项列表中。要实现永久留存,需要通过Excel的AddIns集合操作或者修改注册表实现。
方案1:通过Excel COM对象的AddIns集合实现(推荐)
该方法无需手动修改注册表,兼容性更好,默认仅对当前用户生效。
PowerShell 实现代码
$excel = New-Object -ComObject Excel.Application $xllPath = "C:\temp\v-0.0.1-20210906\LS-ZmqRtd-AddIn64.xll" # 第二个参数设为$false表示不将xll复制到系统默认加载项目录,如需复制可改为$true $addin = $excel.AddIns.Add($xllPath, $false) # 设置为已安装状态,这一步会写入配置实现持久化 $addin.Installed = $true # 退出Excel并释放COM对象避免进程残留 $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Remove-Variable excel
Python 实现代码
import win32com.client import pythoncom # 初始化COM环境 pythoncom.CoInitialize() xl = win32com.client.gencache.EnsureDispatch("Excel.Application") xll_path = "C:/Users/michael.k/Desktop/v-0.0.1-20210906/LS-ZmqRtd-AddIn64.xll" addin = xl.AddIns.Add(xll_path, False) addin.Installed = True # 退出释放资源 xl.Quit() pythoncom.CoUninitialize()
方案2:直接修改注册表实现(适合批量部署)
如果需要批量部署,可以直接修改对应注册表项实现,路径如下:
- 仅当前用户生效:
HKEY_CURRENT_USER\Software\Microsoft\Office\<Excel版本号>\Excel\Addins\<自定义加载项名称> - 所有用户生效:
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\<Excel版本号>\Excel\Addins\<自定义加载项名称>
需要添加以下4个键值: FriendlyName(字符串值):加载项在Excel中显示的名称Description(字符串值):加载项描述信息LoadBehavior(DWORD值):设为3,代表Excel启动时自动加载该插件Manifest(字符串值):填写XLL文件的完整本地路径,结尾加|vstolocal,示例:C:\LS-ZmqRtd-AddIn64.xll|vstolocal
注意:Excel版本号对应规则:2010=14.0,2013=15.0,2016/2019/365/2021=16.0,修改LOCAL_MACHINE路径需要管理员权限。
注意事项
- 运行脚本前请关闭所有已打开的Excel进程,否则配置可能无法写入
- 32位Excel必须使用32位XLL文件,64位Excel必须使用64位XLL文件,否则会加载失败
- 如需为所有用户安装,需要以管理员权限运行脚本/修改注册表
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

