求解器加载项错误,未找到求解器 32.dll 并发生意外错误
Posted
技术标签:
【中文标题】求解器加载项错误,未找到求解器 32.dll 并发生意外错误【英文标题】:Solver add-in error, solver32.dll not found and unexpected error occured 【发布时间】:2019-10-30 08:48:56 【问题描述】:我正在使用 excel 2016。我正在尝试自动化求解器以优化我的投资组合。该代码适用于几台电脑,但不适用于我和我的一些同事。错误,未找到solver32.dll,有时出现意外错误或可用内存已用完。
我经历了很多可能的解决方案: 1.禁用求解器并重新启动excel并再次加载 2.更改activex的安全设置提示我 3.重新安装/维修办公室 4.逐个单元格添加约束 还有更多的东西。
帮助的一件事是安装 64 位办公室。
现在求解器可以手动工作。 使用 VBA 代码时,它会卡在 solverAdd 函数上。有任何想法吗?
SolverReset
SolverOK setCell:=Range("T28"), MaxMinVal:=1, ByChange:=Range("weights"), Engine:=1
'adding lower constraints
For i = 1 To 8
SolverAdd CellRef:=Range("S15").Offset(i, 0), Relation:=3, FormulaText:=Range("S15").Offset(i, -2).Value
Next i
'adding upper constraints
For i = 1 To 8
SolverAdd CellRef:=Range("S15").Offset(i, 0), Relation:=1, FormulaText:=Range("S15").Offset(i, -1).Value
Next i
'portfolio must add to 100%
SolverAdd CellRef:=Range("Total"), Relation:=2, FormulaText:=1
SolverFinish KeepFinal:=1
SolverSolve UserFinish:=True
【问题讨论】:
【参考方案1】:检查求解器插件是否已启用。转到“文件”选项卡 >“选项”>“管理 Excel 加载项”(窗口底部的“开始”按钮)并检查求解器是否已启用。如果是,则尝试取消选中所有选项并重新启动 excel,然后执行相同的操作并再次启用 Solver。
该文件最初是在 excel 2010 中制作的吗?如果是这样,可能是不兼容的问题。有些人显然试图将工作表复制并粘贴到新的 excel 2016 工作表中,问题就解决了。
也可能是 COM 插件相关的问题。转到“开发人员”选项卡并尝试取消选中 COM 加载项中的所有选项。
【讨论】:
不是以上任何一种。我已经尝试过你的第一个建议。代码是在 excel 2016 中创建的【参考方案2】:-
安装扩展
File tab > Options > Manage Excel Add-ins > GO > Select the Solver Add-in > OK
等待安装完成
重新启动 Excel。这是关键的一步
【讨论】:
以上是关于求解器加载项错误,未找到求解器 32.dll 并发生意外错误的主要内容,如果未能解决你的问题,请参考以下文章
Google OR-Tools(使用 SCIP 求解器) - 如何访问求解器找到的中间解决方案?