【问题标题】:Vba Sort.SetRange to python win32com (Excel)Vba Sort.SetRange 到 python win32com (Excel)
【发布时间】:2013-05-07 13:13:08
【问题描述】:

我想将此宏翻译成 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 告诉我:排序实例没有 call 方法

我是这样翻译的:

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

我很迷茫

【问题讨论】:

    标签: python excel python-2.7 win32com vba


    【解决方案1】:

    终于找到方法了:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-22
      • 2014-04-10
      • 1970-01-01
      • 2021-04-30
      • 2013-01-21
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多