xlwings
は、ExcelとPythonを相互に連携させるためのライブラリです。特に、VBAの代わりにPythonを使いたい場合や、PythonでExcelの操作を自動化したい場合に便利です。
xlwingsのRunPython関数
xlwings
のRunPython
関数を使うと、ExcelからPythonの関数を呼び出すことができます。具体的な使い方は以下の通りです。
まず、Python側で呼び出したい関数を定義します。以下は、hello.py
というPythonファイル内に定義されたworld
という関数の例です。
# hello.py
import numpy as np
import xlwings as xw
def world():
wb = xw.Book.caller()
wb.sheets[0]['A1'].value = 'Hello World!'
次に、ExcelのVBAエディタ(Alt-F11で開く)で、以下のようにRunPython
関数を使ってPythonの関数を呼び出します。
Sub HelloWorld()
RunPython "import hello; hello.world()"
End Sub
このVBAのHelloWorld
関数を実行すると、Pythonのworld
関数が呼び出され、Excelのアクティブなワークブックの最初のシートのA1セルに”Hello World!”という文字列が入力されます。
注意点
RunPython
関数を使う際には、いくつか注意点があります。
xw.Book.caller()
は、Excelから呼び出される関数の中で使うようにしましょう。グローバル変数として外部で使うと、Excelが正しく終了しない問題が発生することがあります。RunPython
関数では、引数を含むPythonの関数を呼び出すことは技術的に可能ですが、あまり便利ではありません。また、RunPython
関数から値を返すことはできません。これらの問題を解決するためには、UDF(ユーザー定義関数)を使うと良いでしょう。ただし、現在のところUDFはWindowsのみで利用可能です。
以上、xlwings
のRunPython
関数を使ったPython関数の呼び出し方法について説明しました。これを使えば、Excelの操作をPythonで自動化したり、Pythonの高度な計算機能をExcelから利用したりすることが可能になります。PythonとExcelの連携を強化したい方は、ぜひxlwings
を試してみてください。