自分基準

自分の思ったことを気ままにメモ代わりに書いていこうかと

VBAからPythonを動かす2

前回VBAからPythonを実行するとができたが引数を渡して実行するほうが分からずスルーしていたが少し調べてみたらできるようになったのでそのメモ

参考にしたのは下のサイト Passing a variable from Excel to Python with XLwings - Stack Overflow

引数を受けて処理するPythonコード

受け取った引数に対して受け取った引数はです。と返すだけのプログラム

Get_arg.py

# -*- coding:utf-8 -*-

from xlwings import Workbook, Range

def get_data(arg):
    wb = Workbook.caller()
    re = "受け取った引数は" + str(arg) + "です。"
    Range("A3").value = re

VBAのコード

xlwingsなどの設定は前回書いたので省略するとして、引数を投げるVBAのコード 変数Nameを宣言しセルのA1の値を代入してpythonに投げるだけのプログラム 引数を下記の様に書くとpythonの方へ投げられる。

('" & Name & "')

ただ何故このような書き方なのかは、上のサイトや公式サイトを見ても英語なのでよくわからなかった。(もしかしたらVBAではこれが普通なのかもしれないが知らないので)とりあえずこれで動くので良しとする。

Sub TestPy()
    Dim Name
    Name = Range("A1").Value
    RunPython ("import Get_arg;Get_arg.get_data('" & Name & "')")
End Sub

f:id:nisiki_satika:20160605110225g:plain