我想在Excel中编写一个VBA宏来调用python脚本。 python脚本将执行一些命令,然后返回一个pandas数据帧。我有代码写入excel电子表格,这是在python脚本中。
我已经安装了xlwings并阅读了VBA宏教程,但仍然感到困惑。我应该使用用户定义的功能吗?我是否需要"返回任何内容"在脚本中?
答案 0 :(得分:2)
如果您的Python脚本直接写入工作簿,这并不困难。首先,如果您写入工作簿的内容足以满足您的要求,则无需从VBA宏或Python返回任何内容。
您不需要UDF。您所需要的就是以下内容(我基本上是从xlwings官方文档here复制而来的):
1)确保您的excel书可以与您拥有脚本的文件对话(最好使用命令行上的xlwings quickstart <project_name>
命令,然后将脚本复制到生成的Python文件中。
2)确保您可以从__main__()
这样的单个函数调用所需的一切(或准备运行execfile或类似的东西)
3)转到你的excel书并制作一个命令按钮,然后为它分配xlwings为你提供的宏SampleCall
4)现在打开VBA编辑器。您应该立即看到SampleCall宏:
Sub SampleCall()
RunPython ("import testproj;testproj.world()")
End Sub
只需适当修改testproj
和world
的名称。
现在可以单击CommandButton来执行脚本!