エクセルからPythonスクリプトを実行する(xlwingsを使用)


はじめに

エクセルに実行ボタンを配置して、それを押すと、Pythonのコードを実行するスクリプトの雛形作成についてまとめたいと思います。
ここではxlwings quickstartを使用します。

前提環境

OS: macOS Catalina 10.15.3
python: Python 3.7.9 (Anaconda 4.8.3)
-> Anacondaを公式サイトからinstallした状態で、"test-env"という仮想環境を1つ作成済み

準備

1.以下のコマンドを実行をし、xlwingsのアドインをインストールする。

*xlwingsはエクセルからPythonを実行するためのモジュールのことです。

$ xlwings addin install

成功すると以下が表示されます。

xlwings version: 0.20.7
Successfully installed the xlwings add-in! Please restart Excel.
Successfully enabled RunPython!

2.アドインを適応させるために、ツール > Excel アドイン を選択

出てきたポップアップの「参照」を押し、xlwings.xlam を検索して選択 ->
ファイルを開くを押す。有効なアドインでXlwingsが選択されていればOKです。

3.全てのエクセルを閉じ、再度対象のエクセルを開く。
エクセルのメニューにxlwingsが増えていることを確認ください。

4.プロジェクトを作成したいディレクトリに移動する
5.コマンドラインで以下を実行。プロジェクト名には作成したいプロジェクトの名前を指定すること。

$ xlwings quickstart {{プロジェクト名}}

6.プロジェクトが作成されその中にプロジェクト名.pyとプロジェクト名.xlsmが作成されていることを確認する。今回はわかりやすいように"test_project"という名前のプロジェクトを作成しました。
(余談ですが、プロジェクト名を"test"にするとなぜか実行ボタンを押下の際にうまくスクリプトが実行されませんでした。こちらにもそのような記載がありました。)

エクセルに実行ボタンをつくってpythonスクリプトを実行する

1.VBE(Visual Basic Editor)を開く。ショートカットキーは「Alt+F11」
以下のような画面が開くことを確認する。

2.エクセルに戻って実行ボタンを追加する。

その際、ポップアップが出てくるので、そのポップアップで、紐づけたいVBA関数を選択する。
ここでSampleCallを選択し、マクロ名の欄にも反映されることを確認しOKを押す。

これによってボタンを押したら、SampleCallが実行されることになります。

3.次に、pythonを実行するためのAnaconda環境を設定します。
エクセルのメニューのxlwingsを開きInterpreterの欄に

/Users/ユーザー名/opt/anaconda3/{Anacondaの環境名}/bin/pythonを記入します。

PYTHONPATHは実行した際に自動的に入るので空のままで大丈夫です。

4.ここまでで準備は完了です。ボタンをタップしてください。
A1にHello xlwings!という文字が表示されればpythonのコードが実行できたことになります。

これで、エクセルからPythonコードを実行する雛形作成されました!