ExcelマクロからPythonを起動させる場合,引数の引渡をどうすればいいのでしょうか.
マクロ側
Sub
par=123
Call RunPython("import abc;abc.test(par)")
end
Python側 abc.py
import xlwings as xw
def test(number):
xw.Range('A1').value = number
parが定義されていない というエラーが出る.
> parが定義されていない というエラーが出る.
これはマクロのエラーですか?pythonのエラーですか?
調べたら似たようなQAが出ましたが調べていますか?
https://stackoverflow.com/questions/54940733/xlwings-runpython-with-function-arguments
マクロ側の変数がnot definedというエラーなので,マクロのエラーかと思います.
照会いただいたHPで対応するとうまくいきました. ただ&&のconcatenationの意味はよく分かりません.
ありがとうございます.
vbaは「+」または「&」で文字列を連結(concatenation)します。
連結した場合、Call RunPython("import abc;abc.test(" &par&")")→Call RunPython("import abc;abc.test(123)")として処理されます。
もしリンク先の内容が理解できなかったのであればvbaを体系的に学習することをおすすめします。
" &par& "ということではなく, "import abc;abc.test(" と文字変数 par と ")" を & で結合するということなんですね.