我正在尝试使用 Datanitro 对 excel 中的一系列单元格进行排序。看起来 Datanitro 没有内置的排序方法,所以我的选择是在 python 中创建一个,这就是 datanitro 在这里所做的,或者使用内置的 VBA 方法并从 python 调用该方法通过数据硝基。
一个简单的 VBA 排序子程序如下:
Sub Sort_1(strDataRange As Range, keyRange As Range)
strDataRange.Sort Key1:=keyRange, Header:=xlNo, Order1:=xlDescending
End Sub
现在我只需要从 python 中调用它并将子例程传递给两个 Range 对象。但是,我的 python shell 中的以下代码会产生 NameError: 'Range' is not defined
VBA('Sort_1', [Range('A5:IF20'), Range('M5')])
此外,如果将两个参数都作为字符串传递,我会得到 NitroException: failed to run excel 宏,可能是因为子例程需要 Range 对象而不是字符串。
一个简单的解决方法是在子例程中定义范围,但是在我的 python 代码中它不能是动态的。
有什么建议么?我更愿意走 VBA 路线,因为该方法已经在 VBA 中很好地定义了,我不必浪费时间创建任何额外的 python 方法。