AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2005, 11:51   #1  
angler is offline
angler
Участник
 
10 / 10 (1) +
Регистрация: 28.09.2005
Адрес: г.Калининград
Еще раз про 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  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
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  
angler is offline
angler
Участник
 
10 / 10 (1) +
Регистрация: 28.09.2005
Адрес: г.Калининград
Спасибо за ответ . А как параметры передавать: поля для сортировки и т.д?
Старый 28.10.2005, 11:13   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Выполните этот джоб, откройте в Excel "Данные/Сортировка.." Там будет видно, какие параметры за что отвечают
__________________
Axapta v.3.0 sp5 kr2
Старый 28.10.2005, 13:12   #5  
minister2007 is offline
minister2007
Участник
 
4 / 10 (1) +
Регистрация: 28.10.2005
Адрес: Москва
Вообще, по всему, как и что делается в приложениях MS Office (Word, Excel, Point, Look, Access),
можно узнать таким образом:

Загружаете интересующее вас приложение.
В нем стартуете новый макрос, делаете, что бы вы хотели, на каких-нибудь тестовых строчках
и останавливаете макрос.
Далее, по F11 заходите в редактор макросов и смотрите код того, как и что данное приложение делало.
Те строки из макроса, которые отвечают за нужный вам код, переносите в свою программу и
с соответствующими синтаксическими изменениями нужный вам код будет готов.
Старый 28.10.2005, 13:17   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,324 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от minister2007
Вообще, по всему, как и что делается в приложениях MS Office (Word, Excel, Point, Look, Access),
Из этого перечня нужно выкинуть Access. В нем такой возможности по определению нет
__________________
Возможно сделать все. Вопрос времени
Старый 28.10.2005, 13:34   #7  
minister2007 is offline
minister2007
Участник
 
4 / 10 (1) +
Регистрация: 28.10.2005
Адрес: Москва
Уточнение:
вызов редактора макросов - Alt+F11
Старый 28.10.2005, 13:56   #8  
angler is offline
angler
Участник
 
10 / 10 (1) +
Регистрация: 28.09.2005
Адрес: г.Калининград
Спасибо.Более менее понятно. Я имел ввиду как в этот job передать args, чтобы в аксапте изменять параметры сортировки.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Работа с Excel через COM и ошибка 0x800A03EC (Range.AutoFilter) gl00mie DAX: Программирование 15 30.03.2007 18:37
Excel Range.Sort Dmitryus DAX: Программирование 1 08.07.2005 19:11
range.find() в excel Shrike DAX: Программирование 12 10.06.2003 17:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:41.