![]() |
#15 |
Moderator
|
Понедельник. Сваял джобик. Все три способа прекрасно работают у меня...
![]() Предлагаю призвать заинтересованную общественность прогнать джоб на своих компах и сравнить настройки Виндов, Экселя и т.п. X++: #define.xlListSeparator( 5 ) static void TestShowDetail(Args _args) { COM xlApp, wbks, wbk, wkss, currSheet; COM rng, rows, currRows; int i; COMVariant dummy = new COMVariant(); COM cmdBars, cmdBar, ctrls, ctrl; str listSeparator; COMVariant varListSeparator; void runExcelMenu(int menuID) { cmdBars = xlApp.CommandBars(); cmdBar = cmdBars.Add(); ctrls = cmdBar.Controls(); ctrl = ctrls.Add(1, menuID); ctrl.Execute(); cmdBar.Delete(); } ; xlApp = new COM('Excel.Application'); xlApp.Visible(true); // определение разделителя списка varListSeparator = xlApp.International(#xlListSeparator); listSeparator = varListSeparator.bStr(); info( listSeparator ); wbks = xlApp.Workbooks(); wbk = wbks.Add(); wkss = wbk.WorkSheets(); currSheet = wkss.Item(1); rng = currSheet.Range('A1'); for (i=1; i<= 10; i++) { rng.Value2(i); rng = rng.Offset(1,0); } rows = currSheet.Rows(); currRows = COM::createFromVariant(rows.Item('4:7')); currRows.Select(); currRows.Group(); xlApp.ExecuteExcel4Macro('ALERT("Пауза 1")'); // xlApp.ExecuteExcel4Macro('SHOW.DETAIL(1,7,FALSE)'); //Скрыть детали xlApp.ExecuteExcel4Macro(strfmt('SHOW.DETAIL(1 %1 7 %1 FALSE)', listSeparator)); //Скрыть детали xlApp.ExecuteExcel4Macro('ALERT("Пауза 2")'); // xlApp.ExecuteExcel4Macro('SHOW.DETAIL(1,7,TRUE)'); //Отобразить детали xlApp.ExecuteExcel4Macro(strfmt('SHOW.DETAIL(1 %1 7 %1 TRUE)', listSeparator)); //Отобразить детали xlApp.ExecuteExcel4Macro('ALERT("Пауза 3")'); cmdBars = xlApp.CommandBars(); cmdBar = cmdBars.Item('PivotTable'); ctrls = cmdBar.Controls(); ctrl = ctrls.Item( 5 ); ctrl.Execute(); //Скрыть детали xlApp.ExecuteExcel4Macro('ALERT("Пауза 4")'); ctrl = ctrls.Item( 6 ); ctrl.Execute(); //Отобразить детали xlApp.ExecuteExcel4Macro('ALERT("Пауза 5")'); runExcelMenu( 464 ); //Скрыть детали xlApp.ExecuteExcel4Macro('ALERT("Пауза 6")'); runExcelMenu( 462 ); //Отобразить детали } Последний раз редактировалось Gustav; 10.09.2007 в 14:39. Причина: добавил определение разделителя списка |
|
|
За это сообщение автора поблагодарили: kashperuk (10), aidsua (1). |