VBAからpythonプログラムを実行

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つでも間違えたり、不足するとエラーが出る。
そのエラーが何の原因か調べるのに苦労する事が多い。
自分は途中で挫折しそうになった。