从VBA运行并执行一个python脚本 [英] Run and execute a python script from VBA

查看:943
本文介绍了从VBA运行并执行一个python脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从VBA模块中运行一个python脚本。我已经在互联网上看过的每个例子都尝试过,所以没有运气。
在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆