关于OLE操纵EXCEL排序问题
本帖最后由 ayaya0001 于 2012-10-31 12:36:50 编辑 我想把一张表分几个部分(例如XX行到XX行的所有列为一个部分),对每个部分分别排序
在循环中执行排序 但是实际上执行Exec之后就跳出循环了 即只执行了po=0的情况 而注释掉Exec语句for循环能够正常执行
求各位大大指教
for(po = 0; po < gnum; po++)
{
trange = "A" + IntToStr(line[po]) + ":F" + IntToStr(peoplenum[po]+1+line[po]-2);//选定区域
Range = WorkSheet1.PG("Range", trange.c_str());
Range.PR("Select");
Range.Exec(Function("Sort")<<ExcelApp.OlePropertyGet("Selection")<<1);
}
Variant vSheet = vExcelApp.OlePropertyGet("ActiveWorkbook")
.OlePropertyGet("Sheets", "sheet");
Variant vSortFields = vSheet.OlePropertyGet("Sort").OlePropertyGet("SortFields");
vSortFields.OleFunction("Clear");
Variant vRange;
vRange = vSheet.OlePropertyGet("Range", "C2:C573");
vSortFields.OleFunction("Add",
vRange, // Key:=Range("C2:C573")
0, // SortOn:=xlSortOnValues,
2, // Order:=xlDescending,
0 // DataOption:=xlSortNormal
);
vRange = vSheet.OlePropertyGet("Range", "A2:A573");
vSortFields.OleFunction("Add",
vRange, // Key:=Range("A2:A573")
0, // SortOn:=xlSortOnValues
1, // Order:=xlAscending,
0 // DataOption:=xlSortNormal
);
vRange = vSheet.OlePropertyGet("Range", "B2:B573");
vSortFields.OleFunction("Add",
vRange, // Key:=Range("B2:B573")
0, // SortOn:=xlSortOnValues
1, // Order:=xlAscending
0 // DataOption:=xlSortNormal
);
vRange = vSheet.OlePropertyGet("Range", "A1:F573");
vSheet.OlePropertyGet("Sort").OleProcedure("SetRange", vRange); // Range("A1:F573")
vSheet.OlePropertyGet("Sort").OlePropertySet("Header", 1); // xlYes
vSheet.OlePropertyGet("Sort").OlePropertySet("MatchCase", 0); // False
vSheet.OlePropertyGet("Sort").OlePropertySet("Orientation", 1); // xlTopToBottom
vSheet.OlePropertyGet("Sort").OlePropertySet("SortMethod", 1); // xlPinYin
vSheet.OlePropertyGet("Sort").OleProcedure("Apply");