Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写VBA宏以使用xlwings调用python脚本_Python_Excel_Pandas_Xlwings_Vba - Fatal编程技术网

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

编写VBA宏以使用xlwings调用python脚本,python,excel,pandas,xlwings,vba,Python,Excel,Pandas,Xlwings,Vba,我想在Excel中编写一个VBA宏来调用python脚本。python脚本将执行一些命令,然后返回一个数据帧。我有写入excel电子表格的代码,它在python脚本中 我已经安装了xlwings并阅读了VBA宏教程,但仍然感到困惑。我应该使用用户定义的函数吗?我需要在脚本中“返回任何内容”吗 如果Python脚本直接写入工作簿,这并不困难。首先,如果写入工作簿的内容足够,则不需要从VBA宏或Python返回任何内容 你不需要自定义项。您只需要以下内容(我基本上是从xlwings官方文档中复制的)

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


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

如果Python脚本直接写入工作簿,这并不困难。首先,如果写入工作簿的内容足够,则不需要从VBA宏或Python返回任何内容

你不需要自定义项。您只需要以下内容(我基本上是从xlwings官方文档中复制的):

1) 确保excel手册可以与脚本所在的文件对话(最好使用命令行上的命令
xlwings quickstart
,然后将脚本复制到生成的Python文件中)

2) 确保您可以从单个函数调用所需的一切,如
\uuuu main\uuuu()
(或者准备运行execfile或类似的函数)

3) 转到您的excel手册,制作一个命令按钮,然后将xlwings为您提供的宏SampleCall分配给它

4) 现在打开VBA编辑器。您应该立即看到SampleCall宏:

Sub SampleCall()
    RunPython ("import testproj;testproj.world()")
End Sub
只需适当编辑
testproj
world
的名称


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

testproj是项目的名称,world是python文件的名称。我要试一试!testproj是Python文件的名称,world是要从该文件执行的函数的名称。RunPython函数实际上将执行Python代码,因此那里的import语句的工作方式与普通Python文件中的工作方式完全相同。祝你好运