1

我正在尝试通过 python 中的 pywin32 运行 Excels Solver 加载项:

import win32com.client
from win32com.client import constants as c

app = Dispatch("Excel.Application")
app.Visible = True
app.Workbooks.Open(r'C:\path\to\testsolver.xlsm')
app.Run("runsolver")

..但得到以下错误:

"Cannot run the macro 'runsolver'. The macro may not be available in this workbook or all  macros may be disabled"
4

1 回答 1

2

我意识到这是一岁了,但如果这仍然有价值,这里的问题可能是在创建 Excel OLE 对象时不会自动加载 Solver。按照设计,加载项必须先手动加载,然后才能在 Excel OLE 对象中使用。

您可以通过检查 OLE 创建的实例并转到“数据”选项卡并观察 Solver 没有出现在那里来确认它没有加载,就像从 Windows GUI 打开 Excel 时一样。

我在尝试解决 Delphi 代码中的类似问题时发现了这一点,如下所述:

CreateOleObject 打开的工作簿不会运行包含 Application.Run "Solver.xlam!..." 的宏导致错误 400

我希望 Python 语法会相似。

于 2014-03-28T03:35:31.627 回答