多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 调试 由于xlwings在每个Python环境中运行,因此您可以使用首选的调试方式。 * **RunPython**: 通过`RunPython`调用Python时,可以设置`mock_caller`,以便在从Excel和Python调用函数之间来回切换。 * **UDFs**: 对于调试用户自定义函数,xlwings提供了方便的调试服务器 首先,Excel将在消息框中显示Python错误: ![](https://i.vgy.me/ZOkXAl.png) >[info]注意 在Mac上,如果在导入xlwings之前模块/包的`import`失败,则不会显示弹出窗口,也不会重置状态栏。 但是,错误仍将记录在日志文件中。 有关日志文件的位置,请参阅[加载项](addin.md)。 ## RunPython 请参考以下Python源代码`my_module.py`的示例代码: ~~~ # my_module.py import os import xlwings as xw def my_macro(): wb = xw.Book.caller() wb.sheets[0].range('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运行以进行调试,并且可以通过`RunPython`从Excel运行而无需更改源代码: ~~~ Sub my_macro() RunPython ("import my_module; my_module.my_macro()") End Sub ~~~ ## UDF debug server 仅限Windows:要调试UDF,只需检查[加载项](addin.md)中的`Debug UDFs`, xlwings VBA模块。 然后在Python源文件的末尾添加以下行并运行它。 根据您使用的IDE,您可能需要以“调试”模式运行代码(例如,如果您使用的是PyCharm或PyDev): ~~~ if __name__ == '__main__': xw.serve() ~~~ 重新计算工作表(`Ctrl-Alt-F9`)时,代码将在断点处停止或输出您可能具有的任何打印调用。 以下屏幕截图显示了在PyCharm社区版本的断点处停止的代码: ![](https://i.vgy.me/bdt8Gp.png) >[info]注意 从命令提示符运行调试服务器时,目前没有优雅的方法来终止它,但关闭命令提示符将终止它。