编写VBA宏以使用xlwings调用python脚本

时间:2017-08-02 18:28:44

标签: python excel-vba pandas xlwings vba

我想在Excel中编写一个VBA宏来调用python脚本。 python脚本将执行一些命令,然后返回一个pandas数据帧。我有代码写入excel电子表格,这是在python脚本中。

我已经安装了xlwings并阅读了VBA宏教程,但仍然感到困惑。我应该使用用户定义的功能吗?我是否需要"返回任何内容"在脚本中?

1 个答案:

答案 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

只需适当修改testprojworld的名称。

现在可以单击CommandButton来执行脚本!