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].range('A1').value = 'Hello World!'

HelloWorld をボタンに設定することもできますし、VBAエディタ上で F5 を押して実行することもできます。

注釈

xw.Book.caller() は、Excelから呼び出される関数内に配置してください。すなわち、関数の外側にグローバル変数として配置してはいけません。グローバル変数にすると、 Use USD Server = True としている場合に、Excelを閉じても適切にシャットダウンできず、ゾンビプロセスが残ってしまいます。

関数の引数および戻り値

技術的には、 RunPython が呼び出す関数に引数を含めることは可能ですが、使い勝手は悪いです。また、 RunPython には戻り値がありません。これらを解決するには、UDFを使いましょう。詳細については ユーザー定義関数 (UDFs) をご覧ください。ただし、UDFを利用できるのは現在Windowsのみとなっています。