借助 xlwings 模块,我能够连接 Excel 和 Python,例如我使用以下代码从 print.py 调用函数,使用一个参数,在本例中是数据文件的路径:
RunPython ("import print; print.print_vars(r'" & fullpath & "')")
现在我用 Python 代码构建了一个卡住模块,我想调用卡住版本(保存在同一文件夹\dist\print\print.exe 中),也使用上面所示的参数。
我尝试过:
RunFrozenPython (ThisWorkbook.Path & "\dist\spss_print\spss_print.exe", "r'" & fullpath & "'")
直接在 VBA 模块中提示错误(期望:=)
以及:
RunFrozenPython (ThisWorkbook.Path & "\dist\print\print.exe r'" & fullpath & "'")
运行宏时会导致错误消息(输入的行太长)。
我已经查看了 github 中的数据库示例( https://github.com/xlwings/xlwings/tree/v0.3.5/examples/database ),但这并不将参数与卡住模块一起使用。来自https://docs.xlwings.org/en/stable/deployment.html#runfrozenpython的指令建议使用不同的代码,但该代码也不起作用。
谁能告诉我如何在 VBA 模块中重写调用?感谢您的帮助。
这是一个工作示例:
import xlwings as xw
import sys
def hello_xlwings(arg1, arg2):
wb = xw.Book.caller()
wb.sheets[0].range("A1").value = arg1 + arg2
if __name__ == '__main__':
hello_xlwings(sys.argv[1], sys.argv[2])
然后卡住后,从 VBA 中这样调用它:
RunFrozenPython "C:\path\to.exe", "arg1 arg2"
我是一名优秀的程序员,十分优秀!