使用xlwings时出错:RunFrozenPython +参数

时间:2019-05-06 14:01:49

标签: python vba xlwings

由于模块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模块中重新编写呼叫吗? 谢谢您的帮助。

1 个答案:

答案 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"