xlwingsを使ってExcelとPython(とR)を連携させる

概要

  • xlwingsというpythonパッケージを使うことでExcelからPython関数を呼ぶ
  • さらにRのPypeRパッケージを使うことでPythonからR関数を呼ぶ
  • Quandlから日経平均を取得し、そこからGarchモデルを計算してみる

xlwingsを用いたPythonとExcelの連携

公式HPとドキュメントが非常にわかりやすいのでそこに従うだけで連携は簡単にできます。(URLは記事一番下にあります)
xlwingsのダウンロードはpipがある環境では

で行うことができます。(この記事では0.3.5を使用しています。)
今使っているエクセルシートとPythonをリンクさせるには、1つモジュールをロードさせる必要があります。

エクセルのVBエディター(alt + F11)から「ファイル」→「ファイルのインポート」→「xlwings.bas」を選択します。
xlwings.basの保存場所はpython上で

とすることで確認できます。xlwings.basをインポートすることで標準モジュール内にxlwingsというモジュールが追加されます。

使ってみる

Pythonコード

コードを使う際にはQuandlのトークンを自分のものに置き換えてくださいね。
pypeRの使い方に関しては手前味噌ですがhttp://nekopuni.holy.jp/?p=1345に書いています。

VBA

VBAに関しては適当なモジュールを追加し、そこに以下のように記述しました。

Excel

適当に以下の様な感じのシートを作ります。
Generateボタンには上述したGarchマクロが割り当てられています。
このボタンをクリックするとGarchマクロからPython上のxl_getDataFromQuandl()関数が実行され、
日経平均とGarchボラティリティが返されます。
excel_ann

xlwingsはnumpyやpandasに対応しているので日付の処理などもスムーズに行なうことができそうです。
A列に表示されている日付はQuandlから返されたPandasをそのままExcelに貼り付けていますが、ちゃんとExcel形式の日付に変換されていますね。

これを使えば例えばRの機械学習モジュールなどもPython経由で呼び出すことが出来ますね。
夢が広がりングです。

参考

xlwings – Replace Excel VBA with Python!
http://xlwings.org/

xlwings – Make Excel Fly!
https://media.readthedocs.org/pdf/fzumstein/latest/fzumstein.pdf