python - 使用 xlwings 编写 VBA 宏来调用 python 脚本

标签 python excel pandas xlwings vba

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

我已经安装了 xlwings 并阅读了 VBA 宏教程,但仍然很困惑。我应该使用用户定义的函数吗?我需要在脚本中“返回任何内容”吗?

最佳答案

如果你的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适本地。

您现在可以单击命令按钮来执行脚本!

关于python - 使用 xlwings 编写 VBA 宏来调用 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45468427/

相关文章:

python - 机器学习模型如何更新?

python - 临时通配符导入/numpy 公式的可读性

python - 从 CSV 文件的 2 列中获取数据。检查条目是否相同并添加货币金额

股票期权不匹配的 Python 正则表达式

excel - Power Query 表达式错误 : A value of type "Record" cannot converted into type "Text"

python - 如何在迭代 pandas 数据框时提高性能?

vba - 另存为 .csv 正确的小数分隔符

Excel如何自动选择整列数据?

使用自定义列作为索引的 Python Pandas 到 CSV

python - 如何从交互式代码中抓取数据