使用Shell从excel vba运行python脚本什么都不做

时间:2012-09-25 13:40:11

标签: excel-vba python-2.7 vba excel

我试图在excel VBA中运行python脚本,如下所示:

Shell("python " & ActiveWorkbook.Path & "\CreateVolsurface.py -d ""10 Sep 12""")

但它什么也没做。如果我观察任务管理器,甚至不会创建python进程。如果我调试并复制上面代码中创建的字符串并将其粘贴到命令提示符中,它将完美运行。

python脚本将日期(作为字符串)作为参数并创建图像文件。

知道为什么这不起作用或我如何调试它?

我也试过这个:

Shell ("python CreateVolsurface.py -d ""10 Sep 12""")

和此:

ret_val = Shell("python " & ActiveWorkbook.Path & "\CreateVolsurface.py -d ""10 Sep 12""", vbHide)

但他们也什么都不做。


问题是vba中的shell()在其默认文件夹中启动cmd.exe,而不是在当前工作簿的活动文件夹中。在我的python脚本中,我有相对路径引用,这是一个问题。为了解决这个问题,我在python脚本中使用os模块在开始时更改了当前目录。

1 个答案:

答案 0 :(得分:2)

尝试指定python.exe的路径,或者您可能需要添加%PATH%环境变量的路径。

尝试以下操作以验证Shell是否正常工作并逐步完成调试器:

ret_val = Shell("notepad.exe", vbNormalFocus)

如果可行,那么您应该尝试指定路径:

args = ActiveWorkbook.Path & "\CreateVolsurface.py -d ""10 Sep 12"""
ret_val = Shell("C:\python27\python.exe " & args)

如果需要检查python是否在%PATH%环境变量中,sysinternals中的Process Explorer(procexp.exe)实用程序可以显示正在运行的进程的所有环境设置。