使用 xlwings 编写 VBA 宏来调用 python 脚本
Writing a VBA macro to call a python script using xlwings
我想在Excel中写一个VBA宏来调用python脚本。 python 脚本将执行一些命令,然后 return 一个 pandas 数据帧。我有写入 excel 电子表格的代码,它位于 python 脚本中。
我已经安装了 xlwings 并阅读了 VBA 宏教程,但仍然感到困惑。我应该使用用户定义的函数吗?我需要在脚本中 "return anything" 吗?
如果你的Python脚本直接写入工作簿,这并不难。首先,您不需要 return 来自 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
的名称即可。
您现在可以单击您的命令按钮来执行您的脚本!
我想在Excel中写一个VBA宏来调用python脚本。 python 脚本将执行一些命令,然后 return 一个 pandas 数据帧。我有写入 excel 电子表格的代码,它位于 python 脚本中。
我已经安装了 xlwings 并阅读了 VBA 宏教程,但仍然感到困惑。我应该使用用户定义的函数吗?我需要在脚本中 "return anything" 吗?
如果你的Python脚本直接写入工作簿,这并不难。首先,您不需要 return 来自 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
的名称即可。
您现在可以单击您的命令按钮来执行您的脚本!