Emm*_*maV 5 python excel vba batch-file excel-vba
我正在尝试从VBA模块运行python脚本。我已经尝试了几乎所有在互联网上看到的示例,因此没有运气。在VBA模块中,我还运行一个.bat文件,它可以完美运行:
batchname = "U:\Backup Bat File.bat"
Shell batchname, vbNormalFocus
Run Code Online (Sandbox Code Playgroud)
接下来,我需要运行python脚本,该脚本与excel文件位于同一文件夹中。现在,我正在尝试:
Dim Ret_Val
Dim args
args=Activeworkbook.Path & "\beps_output.py"
Ret_Val = Shell("C:\python34\python.exe" & args, vbNormalFocus)
Run Code Online (Sandbox Code Playgroud)
它不会出错,但是什么也没发生。我对“ Ret_Val”(返回值?)在这里做什么以及为什么不运行感到困惑。
这是在我的 PC 上运行的(Win 7 x64,python 2.7.9):
Sub runpython()
Dim Ret_Val
Dim args As String
args = "W:\programming\python\other_py\sqrt.py"
Ret_Val = Shell("C:\Program Files (x86)\python27\python.exe" & " " & args, vbNormalFocus)
If Ret_Val = 0 Then
MsgBox "Couldn't run python script!", vbOKOnly
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
Ret_Val如果调用成功,则为非零,即启动命令的 processID。请注意,该命令将异步运行,即 VBA 代码将比外部命令终止的速度更快。
尝试在 exe 程序和文件之间添加空格:
Ret_Val = Shell("C:\python34\python.exe " & args, vbNormalFocus)
Run Code Online (Sandbox Code Playgroud)
另外,由于Shell是一个返回带有指定参数的值(变体类型 - double)的函数,因此返回值可以包含在变量中,如您在此处使用 Ret_Val 指定的那样。然后,您可以使用该值添加条件逻辑和错误处理。
| 归档时间: |
|
| 查看次数: |
14602 次 |
| 最近记录: |