【问题标题】:Calling an Excel user defined function from Python always returns None从 Python 调用 Excel 用户定义函数总是返回 None
【发布时间】:2015-01-12 19:14:53
【问题描述】:

我正在尝试从我从 python 调用的 Excel 函数中获取返回值。 我总是得到一个None 值。

这里是excel函数:

Public Function GetString()
    GetString = "aa"
End Function

这是电话:

xlApp.Run('ThisWorkbook.GetString')

返回:None

我没有问题进入指定的函数,因为我尝试从中修改单元格值并且它有效。

我错过了什么吗?

【问题讨论】:

    标签: python excel


    【解决方案1】:

    尚不清楚您如何分配变量xlApp。 假设代码像

    import win32com.client
    xl = win32com.client.Dispatch("Excel.Application")
    xlApp = xlApp.Application
    

    考虑:

    1. 您必须将结果分配给一个变量,如

      myStr = xlApp.Run('ThisWorkbook.GetString')

    2. 您似乎已将用户定义函数放在 Excel 文件中的 ThisWorkbook 中。除非这是故意的,否则打开 Excel 文件,在 Visual Basic 编辑器中插入一个模块,然后将您的函数移到那里。相应地修改来自 Python 的调用。

    3. 您可能希望将函数定义为

      Public Function GetString() as String

    How to call Excel VBA functions and subs using Python win32com?

    【讨论】:

    • 我忘记了返回类型,但我不明白为什么它不能在工作簿上工作,而是在模块上工作。
    • 我不确定这是否会有所作为。至少,这是一个良好的编码实践问题(这不能解释你的第二个问题)。以这种方式移动代码时,我看到了一些奇怪的事情,所以我认为这可能是你问题的另一个因素。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多