【发布时间】:2021-09-06 14:58:49
【问题描述】:
我想从 Excel VBA 启动 Python 脚本。我有这个
Sub RunPython()
Dim PythonExe As String, PythonScript As String, PythonArgs As String
Dim objShell As Object
PythonExe = "C:\MyProgs\Python\Python37\python.exe"
PythonScript = "c:\scripts\Python\test.py"
PythonArgs = "1 1"
Set objShell = VBA.CreateObject("Wscript.Shell")
objShell.Run PythonExe & " " & PythonScript
'objShell.Run PythonExe & " " & PythonScript & " " & PythonArgs
End Sub
Python 脚本的编写方式可以在命令行上接受参数,或者在没有给出参数时提示用户。 第一个 objShell.run ... 起作用,它启动脚本并等待用户输入。 第二个 objShell.run ... 不起作用。外壳闪烁,就是这样。 如果我像这样直接从命令行调用python脚本
test.py 1 1
脚本有效。
那么,如何使用 VBA 将参数传递给脚本? 最终,我想从 Excel 工作表中读取两个参数并传递它们。
【问题讨论】:
-
如果将参数传递给 Python 脚本,它会等待用户输入吗?脚本是否可能完成得如此之快,以至于 shell 只出现和消失?