次のように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 モジュールを使用して、開始時に現在のディレクトリを変更しました。