从VBA运行并执行python脚本

2024-04-28 16:08:02 发布

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

我正在尝试从VBA模块运行一个python脚本。我已经尝试了几乎所有我在网上看到的例子,所以没有运气。 在VBA模块中,我还运行一个.bat文件,它工作得很好:

batchname = "U:\Backup Bat File.bat"

Shell batchname, vbNormalFocus

接下来我需要运行python脚本,它与excel文件位于同一个文件夹中。 现在我正在尝试:

Dim Ret_Val

Dim args

args=Activeworkbook.Path & "\beps_output.py"

Ret_Val = Shell("C:\python34\python.exe" & args, vbNormalFocus)

不会出错,但什么也没发生。我有点搞不懂“Ret_Val”(返回值?)在这里,为什么它不运行。


Tags: 模块文件脚本argsvalshellvbabackup
2条回答

尝试在exe程序和文件之间添加一个空格:

Ret_Val = Shell("C:\python34\python.exe " & args, vbNormalFocus)

另外,由于Shell是一个返回具有指定参数的值(variant type-double)的函数,因此返回的值可以包含在变量中,正如您使用Ret-Val指定的那样。然后可以使用此值添加条件逻辑和错误处理。

这是在我的电脑上运行的(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

如果调用成功,Ret_Val将为非零,即已启动命令的processID。请注意,该命令将异步运行,即VBA代码的继续速度将快于外部命令的终止速度。

相关问题 更多 >