如何永久启用VBA引用中的SOLVER?解决退出Excel后自动关闭问题
永久激活VBA中的Solver引用
这个问题我太懂了——每次重启Excel后Solver引用就自动关掉,每次都要手动去勾,确实折腾人。下面给你两个可行的方案,一个是从系统层面永久设置,另一个是用VBA代码自动兜底,你可以根据自己的情况选:
方案1:通过注册表修改实现永久启用
Excel的加载项引用状态其实存在注册表中,我们可以直接修改对应键值来永久启用Solver:
- 先关闭所有Excel窗口,避免冲突
- 按下
Win + R打开运行窗口,输入regedit回车打开注册表编辑器(注意:修改注册表有风险,建议先备份注册表) - 根据你的Excel版本找到对应的路径:
- 32位Excel在64位系统:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\<Excel版本>\Excel\Options - 64位Excel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<Excel版本>\Excel\Options
(<Excel版本>替换成你的版本号,比如2016/2019/2021/365都是16.0)
- 32位Excel在64位系统:
- 在右侧窗口右键新建字符串值,命名为
OPEN(如果已经存在就直接编辑) - 修改数值数据为:
"C:\Program Files\Microsoft Office\root\Office16\SOLVER.XLAM"(路径要对应你的Excel实际安装路径,旧版本Office可能是Office15等) - 重启Excel,打开VBA编辑器检查引用,Solver应该已经永久激活了
方案2:用VBA代码自动加载Solver(更安全的兜底方案)
如果不想碰注册表,或者担心不同电脑环境的兼容性,这个方法更稳妥——每次打开工作簿时自动检查并启用Solver引用:
- 打开你的工作簿,按
Alt + F11进入VBA编辑器 - 在左侧项目窗口找到你的工作簿,双击
ThisWorkbook - 在代码窗口的下拉菜单依次选择
Workbook和Open事件,然后粘贴下面的代码:
Private Sub Workbook_Open() Dim ref As Reference Dim solverPath As String ' 根据你的Excel版本设置Solver路径,下方是Office 365/2019/2016的默认路径 solverPath = "C:\Program Files\Microsoft Office\root\Office16\SOLVER.XLAM" On Error Resume Next ' 检查是否已经加载Solver引用 Set ref = ThisWorkbook.VBProject.References("Solver") On Error GoTo 0 If ref Is Nothing Then ' 如果未加载,尝试添加引用 On Error Resume Next ThisWorkbook.VBProject.References.AddFromFile solverPath On Error GoTo 0 ' 验证是否添加成功 Set ref = ThisWorkbook.VBProject.References("Solver") If ref Is Nothing Then MsgBox "无法自动加载Solver,请手动检查加载项路径!", vbExclamation End If End If End Sub
- 保存工作簿为启用宏的格式(
.xlsm或.xlsb) - 下次打开工作簿时,代码会自动检查并加载Solver引用,不用手动操作
注意事项
- 方案1需要管理员权限修改注册表,而且不同Excel版本的路径可能有差异,要提前确认Solver的实际安装路径
- 方案2需要启用VBA的信任中心设置(允许对VBA项目对象模型的访问),可以在Excel选项→信任中心→信任中心设置→宏设置里找到这个选项
内容的提问来源于stack exchange,提问作者Junyong Kim
相关产品推荐
相关产品推荐

