|
27.10.2005, 11:51 | #1 |
Участник
|
Еще раз про Excel Range.Sort
В своё время была тема:
Цитата:
Люди кто нибудь пытался вызывать Sort у COM объекта Excel Range
2й день бьюсь какие только параметры не ставил вылетает с ошибкой и все тут (только не предлагайте делать сортировку перед выводом в excel, в данном конкретном случае это слишком трудоемко) range Пример PHP код: _r3 = _doc.findRange("J6"); comRange = _doc.findRange("A6:J6"); comRange.Select(); comRange.Sort(_r3, 1, COMArgument::NoValue, COMArgument::NoValue, 1, COMArgument::NoValue, 1, 0, 1, false, 1, 1); Может кто нибудь разобрался? |
|
27.10.2005, 18:10 | #2 |
Участник
|
X++: //XlSortOrder #define.xlAscending(0x00000001) #define.xlDescending(0x00000002) //XlYesNoGuess #define.xlGuess(0x00000000) #define.xlNo(0x00000002) #define.xlYes(0x00000001) //XlSortOrientation #define.xlSortRows(0x00000001) #define.xlSortColumns(0x00000002) static void SortExcel(Args _args) { ComExcelDocument_Ru excel = new ComExcelDocument_Ru(); COM Doc; COM App; COM Sheet; COM r; int row; ; excel.newFile(); excel.Visible(False); Doc = excel.getComDocument(); App = Doc.Application(); sheet = App.ActiveSheet(); for (row = 1; row <= 200; row++) { r = Sheet.Range(ComExcelDocument_Ru::numToNameCell(1, row)); r.Value2(ComVariant::createFromInt(row)); r = Sheet.Range(ComExcelDocument_Ru::numToNameCell(2, row)); r.Value2(ComVariant::createFromInt(row mod 7)); r = Sheet.Range(ComExcelDocument_Ru::numToNameCell(3, row)); r.Value2(ComVariant::createFromInt(row mod 11)); } r = Sheet.Range(ComExcelDocument_Ru::numToNameCell(1, 1), ComExcelDocument_Ru::numToNameCell(3, 1)); r = r.EntireColumn(); r.Sort(ComVariant::createFromCOM(Sheet.Range("C1")), ComVariant::createFromInt(#xlAscending), ComVariant::createNoValue(), ComVariant::createFromCOM(Sheet.Range("B1")), ComVariant::createFromInt(#xlDescending), ComVariant::createFromCOM(Sheet.Range("A1")), ComVariant::createFromInt(#xlAscending), ComVariant::createFromInt(#xlNo), ComVariant::createNoValue(), ComVariant::createFromBoolean(True), ComVariant::createFromInt(#xlSortRows)); excel.Visible(True); }
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: samolalex (2), CHESER85 (1). |
28.10.2005, 11:07 | #3 |
Участник
|
Спасибо за ответ . А как параметры передавать: поля для сортировки и т.д?
|
|
28.10.2005, 11:13 | #4 |
Участник
|
Выполните этот джоб, откройте в Excel "Данные/Сортировка.." Там будет видно, какие параметры за что отвечают
__________________
Axapta v.3.0 sp5 kr2 |
|
28.10.2005, 13:12 | #5 |
Участник
|
Вообще, по всему, как и что делается в приложениях MS Office (Word, Excel, Point, Look, Access),
можно узнать таким образом: Загружаете интересующее вас приложение. В нем стартуете новый макрос, делаете, что бы вы хотели, на каких-нибудь тестовых строчках и останавливаете макрос. Далее, по F11 заходите в редактор макросов и смотрите код того, как и что данное приложение делало. Те строки из макроса, которые отвечают за нужный вам код, переносите в свою программу и с соответствующими синтаксическими изменениями нужный вам код будет готов. |
|
28.10.2005, 13:17 | #6 |
Administrator
|
Цитата:
Сообщение от minister2007
Вообще, по всему, как и что делается в приложениях MS Office (Word, Excel, Point, Look, Access),
__________________
Возможно сделать все. Вопрос времени |
|
28.10.2005, 13:34 | #7 |
Участник
|
Уточнение:
вызов редактора макросов - Alt+F11 |
|
28.10.2005, 13:56 | #8 |
Участник
|
Спасибо.Более менее понятно. Я имел ввиду как в этот job передать args, чтобы в аксапте изменять параметры сортировки.
|
|