求解器加载项错误,未找到求解器 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 并发生意外错误的主要内容,如果未能解决你的问题,请参考以下文章

win7系统,经常发出错误提示音,但是啥都没有提示,求解

在 Python 逻辑回归中向求解器提供种子值

Google OR-Tools(使用 SCIP 求解器) - 如何访问求解器找到的中间解决方案?

Or-Tools CP-SAT 求解器导出/导入:加载模型后如何访问变量?

约束求解器在编程语言和编译器中的使用

如何设置 Pyomo 求解器超时?