从Python调用Excel用户定义函数始终返回None

时间:2015-01-12 10:20:12

标签: python excel

我试图从我从python调用的Excel函数中获取返回值。 我总是得到None值。

这是excel功能:

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

以下是电话:

xlApp.Run('ThisWorkbook.GetString')

退回:None

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

目前尚不清楚如何分配变量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

  4. 请参阅 How to call Excel VBA functions and subs using Python win32com?