xlwings可以将数组返回给VBA变量吗?

时间:2016-01-29 14:28:53

标签: vba excel-vba xlwings excel

我是xlwings的新手,并且无法找到任何文档或将数组返回到VBA变量的方法。

e.g。

Function GetTickers() As Variant
    GetTickers = RunPython("import xcel_interface;xcel_interface.get_ticker_list()")
End Function

返回的值类似于:数组(" A"," B"," C")

1 个答案:

答案 0 :(得分:1)

RunPython不返回值,即它适用于处理工作簿中的任何内容(如单元格的值),但不适用于VBA或用户定义的函数(UDF)。 decorator syntax可以满足您的需求,但目前仅在Windows上支持。

示例Python代码(您需要导入Excel,例如使用加载项):

import xlwings as xw

@xw.xlfunc
def test():
    return [[1, 2], [3, 4]]

这将在VBA中为您提供Variant,您可以这样使用:

Sub arr_test()
    Matrix = test()

    For Row = 0 To 1
        For Column = 0 To 1
            Debug.Print Matrix(Row, Column)
        Next
    Next
End Sub

在Python中,您还可以返回NumPy数组而不是嵌套列表:np.array([[1, 2], [3, 4]])