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% 環境変数にパスを追加する必要がある場合があります。

以下を試して、シェルが機能していることを確認し、デバッガーでステップスルーします。

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 に答える