見出し画像

xlwingsでエクセルとPythonを合体③:エクセル側からPythonを呼び出すにはどうしたらいいか?

今回、ようやくエクセルからPythonを呼び出す方法についてご紹介できる回となりました。いよいよ、エクセルからPythonを動かしていく方法について学んで行きます。

初回で今回のマガジンが目指す方向性をご紹介しているので、まだの方は予めご確認ください。

マガジンはまだまだ増やしていくのですが、

外資系のエクセル×Python術

というマガジン名でやっています。ぜひ最初から順に追っていくようにご確認をしていただければと思います。

今回実施していく目次は

1.エクセルからRun Mainで実行しよう
 A.事前に実行する.pyのファイルを用意し、エクセルと同じフォルダ内に保存(別でも大丈夫ですが、まずはそうしておくようにします)
 B. Interpreterの横の空欄にPythonの実行ファイルがあるPathを登録
 C. PYTHONPATHの横の空欄にエクセルと.pyファイルがあるPathを登録
 D. Run Mainボダンを押して実行
2.エクセルからRun Pythonで実行しよう

です。両者の詳細なメリット・デメリットについては、ここでは紹介せずまずはやり方の部分のみ紹介していきます。(小難しいので。。)

今日は、エクセルのこの機能とVBAを少し使っていきます。

1.エクセルからRun Mainで実行しよう

目次名が示す通り、Run Mainを実行するというのは以下のボタンを押すことで実行します。ボタンを押せば実行できるので、とても便利だと最初、私は思ったのと、これで実行できる基盤を整えておけば、Pythonと自由に連携してやりたいことが広がるなと感じました。

後述の2つ目のRun Pythonでは必要になってくるVBAはこの場合には不要です。では、早速ボタンを押して実行してみてほしいのですが、おそらくエラーが表示されてしまい、困惑するのではないかと思います。これ実は、実行に際してはいくつか事前に設定をしておく必要がありますので、順を追ってご紹介します。

A.事前に実行する.pyのファイルを用意し、エクセルと同じフォルダ内に保存(別でも大丈夫ですが、まずはそうしておくようにします)
B. Interpreterの横の空欄にPythonの実行ファイルがあるPathを登録
C. PYTHONPATHの横の空欄にエクセルと.pyファイルがあるPathを登録
D. Run Mainボダンを押して実行

と言った順です。

A. 事前に実行する.pyのファイルを用意し、エクセルと同じフォルダ内に保存

今回は簡単にするために以下のコードを使っていきます。ここでのポイントは実行する関数名をdefで定義していることはPythonの特徴ではあるのですが、そこの名前を必ずmainにしておきます。

import xlwings as xw
def main():    
    wb = xw.Book.caller()    
    sheet = wb.sheets[0]    
    sheet.range("B2").value = "Hello World!"

それ以外は、これまでのマガジンで紹介した内容を復習してxlwingsの使い方をマスターした方であれば問題ないかと思います。なお、Pythonに詳しい方もいるので、一応の解説を追加しておくと、その後にmain()のような実行はエクセル上でその役割を行うことになっているため不要です。

これを以下の要領で同じフォルダ内に以下のようにエクセルと.pyファイルを保存しておきます。

①が上記のコードで、②がエクセルです。ともに、RunPythonというフォルダに入れています。これでAは終了です。

B. Interpreterの横の空欄にPythonの実行ファイルがあるPathを登録

では次に、Pythonの実行ファイルを登録していきます。Pythonの実行ファイルは.exeファイルのことなのですが、どこにこのファイルが保存されているかを調べる方法としてはAnaconda Promptを起動してwhere pythonというコマンドを入力してみましょう。すると、Pythonの実行ファイルが保存されている箇所がわかりますので、これをコピペします。

(base) C:\Users\(ユーザー名)>where python
C:\Users\(ユーザー名)\Anaconda3\python.exe

以下のような感じになります。

これによって、Bは完了です。

C. PYTHONPATHの横の空欄にエクセルと.pyファイルがあるPathを登録

では次にこれをやっていきます。これも難しくはなく、Windowsの場合には、フォルダの右にある下矢印のような箇所を押して出てくるPathをコピペして貼り付けるだけです。

エクセルでは以下のようになります。

ちなみに私の場合には以下を指定しています。

Interpreter → 
C:\Users\(ユーザー名としてそれぞれ異なる)\Anaconda3\python.exe
Pythonpath → 
C:\Users\(ユーザー名としてそれぞれ異なる)\Desktop\RunPython

D. Run Mainボダンを押して実行

では最後、実行してみましょう。

Run mainを押してしばらく立つと、B2セルにHello World!が表示されましたでしょうか?

これで設定と実行をしてRun mainを操作する基本的なご紹介は終わりです。最後に、Hello World!の横(C2のセル)に、別の文字を入れるというものをしてみましょう。コードを以下のように書き換えます。書き換えた後に、上書き保存をすることを忘れずに。

import xlwings as xw
def main():    
    wb = xw.Book.caller()    
    sheet = wb.sheets[0]    
    sheet.range("B2").value = "Hello World!"
    sheet.range("C2").value = "Hello World! Hello World!"  

   またRun mainボタンを押してみます。すると、

こうなりましたでしょうか?コードの変更がうまく反映されてエクセルに反映されている状況が確認できました。

以上で、Run mainの紹介は終わります。
2.エクセルからRun Pythonで実行しようは、今回の記事が長くなったので次回のNoteに譲ることにします!

以上で、今回ご紹介したい機能は終了となります。ぜひ今回の機能もマスターしてエクセル×Python力を上げていきましょう。



この記事が気に入ったらサポートをしてみませんか?