0
Я хотел бы перевести этот макрос Python 2.7,Vba Sort.SetRange в Python win32com (Excel)
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
Однако последняя часть дает мне headeach, согласно документации SortRange Эксел suposed для вызова только объектов Sort.
но питон говорит мне: Отсортировать экземпляр не имеет вызова метода
вот как я перевел:
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()
Я совершенно потерял