通过VBA修改OpenSolver模型可变单元格报错的技术咨询
问题描述
我想通过点击按钮,用VBA修改OpenSolver模型的可变单元格,尝试了以下代码:
Sub ChangeVariableCells() ' 清除现有可变单元格 OpenSolver.Reset ' 设置新的可变单元格范围 OpenSolver.Range("A1:A10").Variable = True ' 求解模型 OpenSolver.Solve End Sub
但运行时报错:
宏可能在此工作簿中不可用,或者所有宏都已禁用。
尽管我已经启用了宏,并且在宏设置中勾选了OpenSolver。
排查解决步骤
确认OpenSolver引用已加载
按Alt+F11打开VBA编辑器,点击菜单栏「工具」→「引用」,检查列表里是否有OpenSolver相关引用项。如果没有,点击「浏览」找到OpenSolver安装目录(通常是C:\Program Files\OpenSolver或用户文档下的OpenSolver文件夹),选择对应dll或加载项文件添加引用。检查宏的保存位置
确保宏保存在当前工作簿模块中,而非个人宏工作簿(Personal.xlsb)。如果按钮绑定的是个人宏里的代码,当前工作簿可能无法访问,需将代码复制到当前工作簿模块后重新绑定按钮。调整OpenSolver对象调用逻辑
部分OpenSolver版本需通过模型对象调用,试试修改代码:Sub ChangeVariableCells() Dim osModel As Object Set osModel = OpenSolver.Models.ActiveModel ' 重置模型 osModel.Reset ' 设置可变单元格范围 osModel.VariableRange = Range("A1:A10") ' 执行求解 osModel.Solve End Sub检查信任中心宏设置
打开Excel选项→「信任中心」→「信任中心设置」→「宏设置」,确认选择「启用所有宏(不推荐;可能会运行危险代码)」或「启用带数字签名的宏」,同时勾选「信任对VBA工程对象模型的访问」。重启Excel并重新加载OpenSolver
关闭所有Excel窗口,重新打开后手动加载OpenSolver,再运行宏测试。
内容的提问来源于stack exchange,提问作者user23548931
相关产品推荐
相关产品推荐

