VBAからPythonファイルを実行する

  • 前提:VBAから埋め込み可能Pythonを使ってPythonファイルを実行する
  • 事前準備
  • 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に入る