2012-09-25 94 views
2

我试图运行在Excel VBA Python脚本是这样的:运行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) 

但他们也无能为力。


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

回答

2

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

请尝试以下方法验证壳牌正在与调试器步:

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)实用程序可以显示正在运行的进程的所有环境设置。

+1

谢谢,其实看起来像其他地方的错误,但使用正常焦点帮助我找到它。 Shell(“”)启动cmd.exe但我猜这是有道理的,它启动它在C:\ Users ... \ Documents中,而不是在ActiveWorkbook.Path中。我相信我会弄清楚如何改变这一点。哦,错误是因为我正在使用python脚本中的相对路径名读取文件,所以无法从错误的目录中运行它:/ – Dan