Excel VBA 逆引き集 | Python呼び出し

Excel VBA
スポンサーリンク

外部連携 × Python呼び出し

Excel VBAから Pythonスクリプトを呼び出す ことで、Pythonの豊富なライブラリや処理能力をExcelに組み込むことができます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Python呼び出しの流れ
    1. VBAから Shell を使ってPythonを起動
    2. Pythonスクリプト(.pyファイル)を実行
    3. 結果をファイルや標準出力で受け取り、Excelに展開
  • 用途例:
    • Pythonでデータ分析 → 結果をExcelに表示
    • Pythonで機械学習モデルを実行 → Excelで結果を確認
    • PythonでWebスクレイピング → Excelに取り込み

テンプレ1:Pythonスクリプトを呼び出す(基本)

Sub Call_Python_Basic()
    Dim cmd As String
    
    ' Pythonスクリプトを呼び出すコマンド
    cmd = "python C:\temp\myscript.py"
    
    ' 実行
    Shell cmd, vbNormalFocus
End Sub
VB
  • ポイント:
    • Shell "python スクリプトパス" で呼び出し。
    • PythonがPATHに通っている必要あり。

テンプレ2:Pythonスクリプトに引数を渡す

Sub Call_Python_WithArgs()
    Dim cmd As String
    
    ' 引数を渡してPythonスクリプトを実行
    cmd = "python C:\temp\myscript.py input.csv output.csv"
    
    Shell cmd, vbNormalFocus
End Sub
VB
  • ポイント:
    • VBAからPythonに引数を渡せる。
    • Python側では sys.argv で受け取る。

テンプレ3:Python結果をテキストファイル経由でExcelに展開

Sub Call_Python_OutputFile()
    Dim cmd As String
    Dim fso As Object, ts As Object, line As String
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rowCount As Long
    
    ' Pythonスクリプトを実行し、結果をファイルに出力
    cmd = "python C:\temp\myscript.py > C:\temp\result.txt"
    Shell cmd, vbHide
    
    ' 少し待機(処理完了を待つ)
    Application.Wait (Now + TimeValue("0:00:02"))
    
    ' 結果ファイルを読み込んでシートに展開
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile("C:\temp\result.txt", 1)
    
    ws.Cells.Clear
    rowCount = 1
    Do Until ts.AtEndOfStream
        line = ts.ReadLine
        ws.Cells(rowCount, 1).Value = line
        rowCount = rowCount + 1
    Loop
    ts.Close
    
    MsgBox "Pythonの結果をExcelに展開しました!"
End Sub
VB
  • ポイント:
    • > result.txt で標準出力をファイルに保存。
    • VBAでテキストを読み込んでExcelに展開。

テンプレ4:Python結果を直接VBAで受け取る(WScript.Shell)

Sub Call_Python_GetResult()
    Dim wsh As Object
    Dim execObj As Object
    Dim output As String
    
    Set wsh = CreateObject("WScript.Shell")
    
    ' Pythonスクリプトを実行
    Set execObj = wsh.Exec("python C:\temp\myscript.py")
    
    ' 標準出力を読み込む
    output = execObj.StdOut.ReadAll
    
    MsgBox "Pythonの結果: " & output
End Sub
VB
  • ポイント:
    • WScript.Shell.Exec を使うと標準出力を直接取得できる。
    • Excelに結果を取り込むのに便利。

例題で練習

'例1:Pythonスクリプトを呼び出す
'例2:Pythonに引数を渡す
'例3:Python結果をファイル経由でExcelに展開
'例4:Python結果を直接Excelに取り込む
VB

初心者向けポイント

  • ShellでPythonを呼び出すのが基本
  • 引数を渡して柔軟に処理できる
  • 結果はファイル経由か標準出力で受け取る
  • Excelを「Pythonのフロント」として活用できる
  • Pythonの強力なライブラリをExcelに組み込める

👉 この「外部連携 × Python呼び出しテンプレ」を覚えておけば、Excel VBAで Pythonの処理を呼び出し、結果をExcelに展開する処理 を簡単に作成できます。

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