VBAからPythonファイルを実行する
2022/09/11
- 前提:VBAから埋め込み可能Pythonを使ってPythonファイルを実行する
- 事前準備
- Python Releases for Windows | Python.org から、適切な Windows embeddable package をダウンロードして解凍する
- 実行する用のPythonファイルを用意する
- pipを使う場合は、もう少し準備がいる
- code
- 前提:マクロファイルのあるフォルダに、埋め込み用pythonと実行用pythonファイルがあると仮定
Dim pythonFolder As String, pythonFilename As String Dim WSH, wExec, commandText As String, res pythonFolder = thisFile.Path & "\python" pythonFilename = thisFile.Path & "\print.py" Set WSH = CreateObject("WScript.Shell") commandText = "cd """ & pythonFolder & """" commandText = commandText & " && python.exe """ & pythonFilename & """" Set wExec = WSH.Exec("%ComSpec% /c " & commandText) res = wExec.StdOut.ReadAll
- 環境変数を使わずに埋め込みpythonのあるフォルダに移動してから、pythonファイルを実行する処理にしている
- パスに空白スペースがあってもいいようにしてる
- pythonの処理に時間がかかっても、マクロ側は次以降の処理を待ってくれる
- 逆にいうと、マクロ側に処理が戻ってこないリスクがある
- python側で何かをprintすると、resに入る