0

我想把这个宏翻译成 python 2.7,

Sheets("Données CENTRE").Select
Columns("A:G").Select
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Données CENTRE").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Données CENTRE").Sort.SortFields.Add Key:=Range("A2:A4644" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Données CENTRE").Sort.SortFields.Add Key:=Range("B2:B4644" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Données CENTRE").Sort.SortFields.Add Key:=Range("C2:C4644" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Données CENTRE").Sort.SortFields.Add Key:=Range("D2:D4644" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Données CENTRE").Sort
        .SetRange Range("A1:G4644")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

然而,最后一部分给了我一个标题,根据 excel 文档,SortRange 应该只在 Sort 对象上调用。

但python告诉我:排序实例没有调用方法

我是这样翻译的:

ws = wb.Sheets("Données Centre")
ws.Columns("A:G").Select
ws.Sort.SortFields.Clear()
ws.Sort.SortFields.Add(Key=ws.Range("A2:A4644"),
                       SortOn=constants.xlSortOnValues,
                       Order=constants.xlAscending,
                       DataOption=constants.xlSortNormal)

ws.Sort.SortFields.Add(Key=ws.Range("B2:B4644"),
                           SortOn=constants.xlSortOnValues,
                           Order=constants.xlAscending,
                           DataOption=constants.xlSortNormal)

ws.Sort.SortFields.Add(Key=ws.Range("C2:C4644"),
                       SortOn=constants.xlSortOnValues,
                       Order=constants.xlAscending,
                       DataOption=constants.xlSortNormal)

ws.Sort.SortFields.Add(Key=ws.Range("D2:D4644"),
                       SortOn=constants.xlSortOnValues,
                       Order=constants.xlAscending,
                       DataOption=constants.xlSortNormal)

ws.Sort(Header=constants.xlYes,
        MatchCase=False,
        Orientation=constants.xlTopToBottom,
        SortMethod=constants.xlPinYin).SetRange(ws.Range("A1:G4644")).Apply()

我很迷茫

4

1 回答 1

0

终于找到了如何:

ws.Range("A1:G4644").Sort(Key1=ws.Range("A1:G4644"),
                          Header=constants.xlYes,
                          MatchCase=False,
                          Orientation=constants.xlTopToBottom,
                          SortMethod=constants.xlPinYin)
于 2013-05-07T13:38:35.757 回答