デバッグ#
xlwingsを実行するPython環境に合わせて、デバッグ方法を選べます。
RunPython:
RunPython
でPythonを呼び出している場合、mock_caller
を設定することで、ExcelとPythonの間で関数の実行を簡単に行き来できるようになります。UDFs: UDF関数のデバッグには、xlwingsのデバッグ サーバーを利用します。
実行時、Pythonのエラーは、Excelのメッセージボックスに表示されます:

注釈
Macの場合、 xlwings
のインポートの前にモジュール/パッケージの import
が失敗したら、メッセージボックスは表示されず、ステータス バーはリセットされません。ただし、エラーはログファイル(/Users/<User>/Library/Containers/com.microsoft.Excel/Data/xlwings.log
)に記録されます。
RunPython#
次のサンプルコード(Pythonのソース ファイル my_module.py
)を例にします:
# my_module.py
import os
import xlwings as xw
def my_macro():
wb = xw.Book.caller()
wb.sheets[0]['A1'].value = 1
if __name__ == '__main__':
# Expects the Excel file next to this source file, adjust accordingly.
xw.Book('myfile.xlsm').set_mock_caller()
my_macro()
my_macro()
は、デバッグはPythonから、実行はExcelの Runpython
から、ソース コードを変更することなく簡単に実行できます。
Sub my_macro()
RunPython "import my_module; my_module.my_macro()"
End Sub
UDF デバッグ サーバー#
UDFをデバッグするには、アドインおよび設定 で Debug UDFs
をチェックします。 続いて、以下のコードをPythonソース ファイルの最後に追加して実行します。使用しているIDEによっては、コードを "debug" モードで実行する必要があります(例:PyCharmやPyDev)
if __name__ == '__main__':
xw.serve()
シートの再計算(Ctrl-Alt-F9
)時に、ブレークポイントによるコードの停止やprint関数による出力を行えます。
以下のスクリーン ショットは、community バージョンのPyCharmで、コードをブレークポイントで止めたときのものです:

注釈
コマンド プロンプトからデバッグ サーバーを実行している場合、現在のバージョンではデバッグ サーバーのみを終了することができないため、コマンド プロンプトを閉じて終了します。