我无法从excel vba运行python脚本。这是vba代码:
Sub RunPython()
Dim objShell As Object
Dim PythonExe, PythonScript As String
Set objShell = VBA.CreateObject("Wscript.Shell")
PythonExe = """C:\Users\carlo\AppData\Local\Microsoft\WindowsApps\python3.exe"""
PythonScript = """C:\Users\carlo\Desktop\MSc_Thesis\ML applications\BlackBox\BlackBoxAbsorbers.py"""
objShell.Run PythonExe & PythonScript
End Sub
python代码如下所示。
print("hello")
input("hello, press enter")
当我运行vba时,python executer会打开,但会立即关闭,而不会实际执行脚本。换句话说,两者都不是 "hello"
也没有 "hello, press enter"
出现在python executer窗口上,该窗口突然关闭。
我确信python.exe和python脚本的路径是正确的。我两个都试过了 """"
和 ""
在这两种情况下,它都不起作用。很明显(非常简单!)如果我直接从python执行器运行python脚本,它就会工作。
2条答案
按热度按时间eufgjt7s1#
你可能需要在两者之间留出空间
PythonExe & " " & PythonScript
. 因此,您运行的命令是"C:\…\python3.exe" "C:\…\BlackBoxAbsorbers.py"
在程序路径和python脚本之间留有空格。还要注意
Dim PythonExe, PythonScript As String
只声明PythonScript As String
但是PythonExe As Variant
. 在vba中,需要为每个变量指定一种类型:Dim PythonExe As String, PythonScript As String
或者是Variant
默认情况下!进一步的
objShell.Run PythonExe & PythonScript
无法正确调试。我建议将命令放入变量中,以便您能够在即时窗口中打印它以进行调试:如果执行此操作,您将看到命令的输出为:
两个字符串之间没有空格,实际上应该是:
因此,我建议:
7cwmlq892#
解决了的!!我不明白为什么,但是拆分objshell.run pythonexe和objshell.run pythonscript效果很好!就像这样:
无论如何谢谢@pᴇʜ,我认为你的回答是肯定的,因为你一直都很好!!