Python 从VBA运行时,xlwings不会“获取_选择”

Python 从VBA运行时,xlwings不会“获取_选择”,python,xlwings,Python,Xlwings,我写这篇文章时有点不确定这是否就是问题所在。我试着用Spyder调试这个问题,更确切地说,没有用 问题是,当使用Workbook.set_mock_callerpath选项时,我的脚本在Spyder中的解释器中运行良好,但在VBA中运行不好 我怀疑GETSUpLoad得到了一个空的选择,但是我不能肯定,因为我不能在中间停止代码。 无论如何,我的脚本是我第一次尝试使用这个包,所以对于以前使用过它的人来说,它不会太复杂。该函数的作用是按Excel选择表的第一列合并该表,并将其余列添加到一起 def

我写这篇文章时有点不确定这是否就是问题所在。我试着用Spyder调试这个问题,更确切地说,没有用

问题是,当使用Workbook.set_mock_callerpath选项时,我的脚本在Spyder中的解释器中运行良好,但在VBA中运行不好

我怀疑GETSUpLoad得到了一个空的选择,但是我不能肯定,因为我不能在中间停止代码。 无论如何,我的脚本是我第一次尝试使用这个包,所以对于以前使用过它的人来说,它不会太复杂。该函数的作用是按Excel选择表的第一列合并该表,并将其余列添加到一起

def xl_consolidate():
    thisWB    = xl.Workbook.caller()
    thisSlctn = thisWB.get_selection(asarray=True, atleast_2d=True)

    thisTable = thisSlctn.value
    (m,n) = thisSlctn.shape
    r = thisSlctn.row
    c = thisSlctn.column

    tableDict = dict()
    tableVals = thisTable[:, 1:].astype(np.float)
    for i in range(m):
        thisKey = thisTable[i, 0]
        if thisKey not in tableDict:
            tableDict[thisKey] = tableVals[i, :]
        else:
            tableDict[thisKey] += tableVals[i, :]

    modTable = sorted(tableDict.keys(), key = lambda k:(-tableDict[k][0], k))
    modTable = [np.hstack((key, tableDict[key])) for key in modTable]

    thisSlctn.clear()
    xl.Range((r, c)).value = modTable
错误发生在排序函数中,它表示以下内容:

Error
modTable = sorted(tableDict.keys(), key = lambda k:(-tableDict[k][0], k))
IndexError: index 0 is out of bounds for axis 0 with size 0
当从VBA调用函数时,我确实做了一个选择

另外一个问题是,我想知道从VBA运行时是否可以调试代码。这将帮助我解决这个问题


感谢您的帮助

我只在未选择任何单元格时收到您的错误。是的,你可能是对的,因为某种原因,它没有得到选择。你怎么称呼RunPython?有按钮吗

但是,您没有正确地连接modTable:您应该构建一个单独的数组,而不是像[array[2,8,8.],array[3,6,6.]]这样的numpy数组列表:array[[2,8,8.]],[3,6,6.]]Python3的xlwings甚至会抱怨如果您试图带来数组列表

至于调试:我可以想到两种可能性,并且都在等待更好的文档:

添加一些日志记录语句,请参见

使用PyCharm、pydeveclipse或visualstudio的远程调试,可以找到一些信息


你使用的是Windows还是Mac?