由于模块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模块中重新编写呼叫吗? 谢谢您的帮助。
答案 0 :(得分:0)
这是一个有效的示例:
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"