ExcelやVBAマクロからPython関数を利用したり、Pythonから操作する方法のまとめ

ExcelでVBAを作って処理を行ったり、逆にJavaなどのほかのアプリからエクセルをオートメーション操作することは、作業の効率化のために良くやりますが、エクセル標準の関数だけではなくて、 自作の関数だったり、オープンソースのライブラリの関数を呼べたら便利ですよね。

最近はPythonを使うことも多いので、エクセルのマクロの中からPython関数や機械学習のライブラリ、Rの統計関数など呼びたいと思って調査したときのメモです。

あと、使い方としては、エクセルを設定シート兼GUIに利用して、エクセルボタンからPythonで作ったWebサービス呼び出しの関数をCallして、取得した結果をまたエクセルの表に出来たら便利だなーとも思って。

各アプリの具体的な使い方は、もう少し使い込んでから別記事でご紹介します。

エクセルのVBAマクロからpythonを呼ぶ

PyXLL

この目的のためには、「PyXll」が良いと思います。 ExcelのVBAとかからPythonの関数を呼んだりする用途が得意。しかも高速です。

エクセルのセルに数式としてPython関数を記述することもできるのは、利用価値が高いと思う。 複数のバージョンのPythonがある環境下でも設定ファイルをいじることでちゃんと動くのも良いですね。

※有料となっていました。残念。30日は評価版は使えます。となると、関数として使うには「xlwings」か「ExcelPython」ですかね。

pythonからエクセルを読み書きしたり、グラフ作ったりする

xlwings

このアプリは、Pythonからエクセルの操作を行ったり、データをセルに埋め込んでエクセルグラフを作ったりするのが得意です。 この機能はWindowsでもMacでも動きます。

逆のこと(UDFs)も出来るけど、PyXllより遅い感じかな。このUDFs(USER DEFINED FUNCTIONS)の機能はWindowsオンリー。

上記以外でPythonとエクセルを連携するソフト

Pythonも人気の言語ですし、エクセルも企業内では多く使われているので、目的によっていろいろなソフトがあります。 上記2つが使いやすそうでしたが、他にも以下のようなプロジェクトあるので、メモしておきます。

DataNitro

結構、米国の大きな企業内でも使われており、良さそううだが、フリーではなくなってしまった。 個人で利用するのは、今となってはちょっとなーという感じ。

Pyvot

これもPythonからエクセルを操作するのが得意。

ExcelPython

こちらは、エクセルの中でPython関数を呼ぶ