web-dev-qa-db-ja.com

Excel vbaでpythonスクリプトを呼び出す方法は?

vBAでpythonスクリプトを呼び出して、私は初心者です。py2exeを使用してメインスクリプトをexeに変換し、VBA(シェル)から呼び出すことを試みましたが、メインスクリプトは他のスクリプトを呼び出しますしたがって、それは複雑になり、私はそれを台無しにします(私のexeは機能しません)。

要するに、スクリプトをexeファイルに変換せずに、Excel vbaからメインスクリプトを呼び出す方法があります。

これまでのところ、私は試しました:

RetVal = Shell("C:\python27\python.exe " & "import " & "C:\\" & "MainScriptFile")

Python.exeを起動しますが、それ以外は何もしません。それから私は試しました:

RetVal = Shell("C:\Windows\System32\cmd.exe " & "python " & "C:\\Python27\\hello.py")

コマンドプロンプトを起動しますが、Pythonも起動しません。

追伸フォーラムで関連するすべての質問を確認しましたが、問題は解決しません。

25
Ege Ozlem

これを試して:

RetVal = Shell("<full path to python.exe> " & "<full path to your python script>")

または、pythonスクリプトがワークブックと同じフォルダーにある場合は、次を試すことができます。

RetVal = Shell("<full path to python.exe> " & ActiveWorkBook.Path & "\<python script name>")

<>内のすべての詳細が提供されます。 <>-変更可能なフィールドを示します

これでうまくいくと思います。ただし、スクリプトが別のフォルダーにある他のファイルを呼び出す場合、スクリプトが適切に処理しない限りエラーが発生する可能性があります。それが役に立てば幸い。

24
Rajgopal C

この問題を解決するにはいくつかの方法があります

Pyinx-非常に軽量なツールで、Python Excelプロセス空間の枯渇から http://code.google.com/p/pyinex/ を呼び出すことができます

私はこれを数年前に使用しました(積極的に開発されていた頃)

お支払いを気にしない場合、これはかなり良いようです

https://datanitro.com/product.html

使ったことないけど


既にPythonで作成している場合、Excelを完全に削除して、すべてを純粋なpythonで実行できますか? 2(Python + Excelのオーバーレイ)よりも1つのコードベース(python)を維持する方がはるかに簡単です。

本当にExcelにデータを出力する必要がある場合、Pythonにはそのための非常に優れたツールさえあります。それがうまくいく場合はお知らせください。リンクを取得します。

5
Brad

ExcelPython を試すこともできます。これにより、Pythonオブジェクトを操作し、VBAからコードを呼び出すことができます。

1
ehremo