外部連携 × Python呼び出し
Excel VBAから Pythonスクリプトを呼び出す ことで、Pythonの豊富なライブラリや処理能力をExcelに組み込むことができます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Python呼び出しの流れ
- VBAから
Shellを使ってPythonを起動 - Pythonスクリプト(.pyファイル)を実行
- 結果をファイルや標準出力で受け取り、Excelに展開
- VBAから
- 用途例:
- 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に展開する処理 を簡単に作成できます。
