如何在excel vba上调用python脚本?

2024-06-28 19:42:34 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试在Vba上调用python脚本,我是一个新手。我尝试使用py2exe将主脚本转换为exe,然后从VBA(shell)调用它,但是主脚本调用其他脚本,因此它变得复杂,我把它弄糟了(我的exe不起作用)。另外,主脚本是一个大文件,我不想修改太多。

底线是,有没有一种方法可以从excel vba调用主脚本,而不将脚本转换为exe文件。

到目前为止,我试着:

RetVal = Shell("C:\python27\python.exe " & "import " & "C:\\" & "MainScriptFile")

它启动python.exe,但不执行其他操作。然后我试着:

RetVal = Shell("C:\Windows\System32\cmd.exe " & "python " & "C:\\Python27\\hello.py")

它启动命令提示符,但甚至不启动python。

另外,我在论坛上查了所有相关的问题,它们都没有解决我的问题。


Tags: 文件方法脚本shellvbaexcelexeretval
3条回答

试试这个:

RetVal = Shell("<full path to python.exe> " & "<full path to your python script>")

或者,如果python脚本与工作簿位于同一文件夹中,则可以尝试:

RetVal = Shell("<full path to python.exe> " & ActiveWorkBook.Path & "\<python script name>")

将给出<>中的所有详细信息。<>-表示可变字段

我想这应该管用。但是,如果脚本要调用位于不同文件夹中的其他文件,则可能会导致错误,除非脚本对其进行了正确处理。希望有帮助。

有两种方法可以解决这个问题

Pyinx-一个非常轻量级的工具,允许您使用excel进程空间调用Python http://code.google.com/p/pyinex/

我几年前就用过这个(在积极开发的时候),效果很好

如果你不介意付钱的话,这个看起来不错

https://datanitro.com/product.html

但我从没用过


如果你已经在用Python编写了,也许你可以完全放弃excel,用纯Python来完成所有的工作?维护一个代码库(python)要比维护2个代码库(python+任何excel覆盖)容易得多。

如果您真的需要将数据输出到excel中,那么Python中甚至有一些非常好的工具可以用于此。如果可以更好的工作让我知道,我会得到链接。

您还可以尝试ExcelPython,它允许您操作Python对象并从VBA调用代码。

相关问题 更多 >