2012-09-25 90 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