首页 > 解决方案 > 如何引用启用宏的 Excel 工作簿并在 Python 中运行 VBA 代码?

问题描述

我已经在 Excel 中建立了一个优化模型,我试图循环遍历多个观察结果并为每个观察结果存储最佳输出。我有一个数据集,我试图将其读入 python,然后将输入值循环放入 Excel 工作表,运行求解器/VBA 代码,然后返回每个观察的输出。

下面是我的输入值的数据集,后面是我尝试使用的当前代码。我目前在下面有这段代码,这是我从这篇文章https://stackoverflow.com/a/19743828/11046221中得到的,因为它似乎让我走得最远。但是我试图找到如何引用“模块”名称并且无法让它工作,所以我在帖子中进一步看到引用工作表名称,这也不起作用,都导致错误消息:

“无法运行宏 'P:/optimization_model_reference.xlsm!Excel_Model.run_solver_v2'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。”

obs var1    var2    var3
0   27  80  100 125
1   35  56  93  128
2   42  48  89  108
3   53  70  91  109
4   59  73  86  89



if os.path.exists("P:/optimization_model_reference.xlsm"):
    xl=win32.Dispatch("Excel.Application")
    xl.Workbooks.Open(os.path.abspath('P:/optimization_model_reference.xlsm'), ReadOnly=1)
    xl.Application.Run("P:/optimization_model_reference.xlsm!Excel_Model.run_solver_v2")  #This I have in the format ("file_name!sheet_name.macro_name")
    xl.Application.Quit()
    del xl

标签: pythonexcelvba

解决方案


推荐阅读