VBAからpythonプログラムを実行しようとして大苦戦したので、
注意点を以下にメモしておく。
pythonプログラムからEXCELを制御するのは出来ていたので、
簡単にできると思ったのが大きな間違いであった。
色々な問題に出会って挫折しかけた・・・。
1.前提
(1)VBAからpythonプログラムを実行するにはAnacondaが必要である。
自分が使っているpyenv+poetry+JupyterLabでは難しい。
→これに気付くのに多くの時間を無駄にした。
(2)EXCELとpythonを結ぶxlwingsライブラリはpythonのバージョンに
強く依存していて、合わないと色々なエラーがでる。
(3)EXCELでの設定が不足すると色々なエラーがでる。
→PC環境によっては省略できるものがあるが、自分の場合は
省略したらエラーが出て解消に多くの時間を費やした。
2.主な作業手順
(1)Anaconda最新版のインストール。(Anaconda3 2022.10)
旧版ではupdateできない場合があり(自分もそうであった)、その場合は
旧版をアンイストールしてから新版をインストールする。
(2)Anaconda環境下のPythonも最新版にする。(Python 3.9.13)
但し、その時点のPythonの最新版よりも少し古い事もある(Anaconda側が間に合わない?)。
(3)Anaconda環境下のxlwingsも最新版にする。(xlwings 0.27.15)
上記(2)と同じ。無理に最新版をインストールしないで、あくまでもAnaconda環境下の
Pythonと合わせる。→これを合わせないと色々なエラーがでる。
(4)xlwingsのアドインをインストールする。
Anaconda Powershell Promptからコマンドを入力する。
→これがないとEXCEL/開発/ツール/参照設定の画面にxlwingsが表示されない。
(5)EXCEL/開発/ツール/参照設定でxlwingsライブラリを指定する。(上図でチェックマークON)
(6)EXCELアドインの設定。
下図の4ケ所を必ず指定する。
(A)Conda Path, Conda Envを指定しないとxlwings.dllが見つからないエラーがでる。
Conda PathはデフォルトインストールならC:\ProgramData\Anaconda3である。
(B)RunPython:Use UDF Serverwを指定しないと処理が遅くなる(エラーは出ない)。
(C)Show Consoleを外さないと下図のプロンプト画面が表示されて煩わしい。
(7)Pythonプログラムの作成。ファイルの拡張子はpyとする。
また、ファイルは下記(8)のEXCELファイルと同じフォルダに入れる。
→JupyterLabで作成・テストしても、ソースプログラムはテキストエディタに
コピーして.pyで保存する。
(8)VBAプログラムの作成。
作り方にはルールがあるので、参考資料をよく見る。
3.参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・VBAマクロからPythonを実行する(xlwings)
・VBAユーザーのためのPython入門 ~xlwingsでExcelからPythonを呼び出す~
<個人的な感想>
作業途中で1つでも間違えたり、不足するとエラーが出る。
そのエラーが何の原因か調べるのに苦労する事が多い。
自分は途中で挫折しそうになった。