从 Python 调用 Excel 用户定义的函数总是 returns None

Calling an Excel user defined function from Python always returns None

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

这是 excel 函数:

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

电话是这样的:

xlApp.Run('ThisWorkbook.GetString')

返回:None

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

我错过了什么吗?

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

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

考虑:

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

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

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

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

    Public Function GetString() as String

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