RunPython¶
xlwings アドイン¶
Run main
(new in v0.16) ボタンやVBA関数 RunPython
を使うには、xlwings アドイン(もしくはVBAモジュール)が必要になります。詳細については アドインおよび設定 をご覧ください。
コマンド ライン クライアントからquickstartコマンドを実行すれば、簡単に新しいプロジェクトを作成できます。詳細については コマンド ライン クライアント(CLI) をご覧ください。
$ xlwings quickstart myproject
"RunPython" でPythonを呼び出す¶
VBAエディタ (Alt-F11
)で、以下のコードをVBAモジュールに書き込みます。 xlwings quickstart
コマンドを実行すれば、サンプル コール付きの新しいモジュールが自動的に追加されます。ゼロから作成したければ、 挿入 > 標準モジュール
から新しいモジュールを追加しましょう。
Sub HelloWorld()
RunPython "import hello; hello.world()"
End Sub
これは hello.py
にある以下のコードを呼び出します:
# hello.py
import numpy as np
import xlwings as xw
def world():
wb = xw.Book.caller()
wb.sheets[0]['A1'].value = 'Hello World!'
HelloWorld
をボタンに設定することもできますし、VBAエディタ上で F5
を押して実行することもできます。
注釈
xw.Book.caller()
は、Excelから呼び出される関数内に配置してください。すなわち、関数の外側にグローバル変数として配置してはいけません。グローバル変数にすると、 Use USD Server = True
としている場合に、Excelを閉じても適切にシャットダウンできず、ゾンビプロセスが残ってしまいます。
関数の引数および戻り値¶
技術的には、 RunPython
が呼び出す関数に引数を含めることは可能ですが、使い勝手は悪いです。また、 RunPython
には戻り値がありません。これらを解決するには、UDFを使いましょう。詳細については ユーザー定義関数 (UDFs) をご覧ください。ただし、UDFを利用できるのは現在Windowsのみとなっています。