2013-05-07 64 views
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,根据对Excel文档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() 

我完全迷失了方向

回答

0

终于找到了如何:

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