2013-05-07 65 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)