从VBA运行并执行一个python脚本 [英] Run and execute a python script from VBA
问题描述
在VBA模块中,我还运行一个.bat文件,它的工作原理很好:
batchname =U: \Backup Bat File.bat
Shell批处理名称,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(返回值?)在这里,为什么它不运行。
这是在我的电脑上运行(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 :\程序文件(x86)\python27\python.exe&& args,vbNormalFocus)
如果Ret_Val = 0然后
MsgBox无法运行python脚本! ,vbOKOnly
End If
End Sub
Ret_Val如果呼叫成功,即启动命令的processID,则
将不为零。请注意,该命令将异步运行,即VBA代码将继续比外部命令将终止。
I'm trying to run a python script from my VBA module. I've tried pretty much every example I've seen on the internet and so for have had no luck. In the VBA module I also run a .bat file, and it works perfectly:
batchname = "U:\Backup Bat File.bat"
Shell batchname, vbNormalFocus
Next I need to run the python script, which is located in the same folder as the excel file. Right now I'm trying out this:
Dim Ret_Val
Dim args
args=Activeworkbook.Path & "\beps_output.py"
Ret_Val = Shell("C:\python34\python.exe" & args, vbNormalFocus)
It doesn't error out, but nothing happens. I'm a little confused at what the "Ret_Val" (return value?) does here, and why it isn't running.
This is running on my 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
Ret_Val
will be non-zero if the call succeeds, namely the processID of the launched command. Note that the command will run asynchronuously i.e. the VBA code will continue faster than the external command will terminate.
这篇关于从VBA运行并执行一个python脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!