2

我正在尝试像这样在 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)

但他们也什么都不做。


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

4

1 回答 1

3

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

于 2012-09-25T14:30:01.247 回答