【VBA】pythonファイルを同期実行する

VBAから
 ・pythonファイルを
 ・同期実行する
方法を記載します!

pythonファイルの実行結果も
取得できます!

PR

前提

pythonがインストールされていること。

PR

pythonのコード

ここでは例として、
 ・「pythonからのメッセージ出力です!」というメッセージを出力する
 ・「test.py」を作成
します。

from tkinter import messagebox
import sys

messagebox.showinfo('メッセージ', 'pythonからのメッセージ出力です!')

# 正常終了の場合、戻り値として「0」を返す
sys.exit(0)

# 異常終了の場合、戻り値として「1」を返す
# sys.exit(1)
pythonファイル
pythonファイル

「sys.exit(X)」で戻り値(実行結果)を指定します(7、10行目)。

PR

VBAのコード

ここでは例として、
 ・上記で作成したpythonのファイル「test.py」を
 ・同期実行
します。
※ここでは先程作成したpythonのファイル「test.py」をデスクトップ配下に配置しています。

'変数の宣言を必須
Option Explicit

Sub execBatch()

    Dim pyFile As String
    Dim wsh As Object
    Dim result As Integer
    
    'pythonファイルのパスを指定
    pyFile = "C:\Users\user\Desktop\test.py"
    
    Set wsh = CreateObject("WScript.Shell")
    
    'pythonファイルを同期実行
    result = wsh.Run(Command:=pyFile, WaitOnReturn:=True, WindowStyle:=0)
    
    If (result = 0) Then
        MsgBox ("pythonファイルは正常終了しました。")
    Else
        MsgBox ("pythonファイルは異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

「pythonファイルのパス」を指定します(11行目)。

Run」メソッドの引数「WaitOnReturn」に「True」を指定することで、同期実行になります(16行目)。
※「False(規定値)」を指定すると同期実行になります。

ここでいう「同期実行」とは、
 ・pythonファイルの処理完了後にVBAへ制御が返ってくるように実行
という意味です。
※pythonファイルの処理が完了するまでは、VBAの処理は停止して先に進みません。

「戻り値(実行結果)」を判定します(18~22行目)。

PR

実行結果

pythonファイルを同期実行できました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

VBAでバッチファイルを実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考②

VBAでコマンドプロンプトのコマンドを実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考③

VBAでPowerShellファイルを実行することもできます。

詳細は以下の記事をご確認ください。

PR

参考④

VBAでVBScriptファイルを実行することもできます。

詳細は以下の記事をご確認ください。

タイトルとURLをコピーしました