2

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

例如

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

返回值类似于: Array("A", "B", "C")

4

1 回答 1

1

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

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

import xlwings as xw

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

这将为您提供一个VariantVBA 格式,您可以像这样使用它:

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]])

于 2016-01-30T15:48:27.693 回答