Снова про ускорение добавления строк в Excel | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Не так давно тут спрашивал про добавление
строк в ексел быстро Дали хороший совет, и он работает Lparameters lexx,lcobb, lnstartx, lnstarty, lnendx, lnendy, lnrow If Type('lcobb') = 'O' lcobb.Activate() lexx.Range(lexx.cells(lnstartx, lnstarty),lexx.cells(lnendx, lnendy)).Select * lexx.Range(lcobb.cells(lnstartx, lnstarty),lcobb.cells(lnendx, lnendy)).Select Else lexx.Range(lexx.cells(lnstartx, lnstarty),lexx.cells(lnendx, lnendy)).Select Endif With lexx.Selection .Resize(lnrow, 1).EntireRow.Insert() ENDWITH ******************************************* Речь идет о добавлении строк в готовые шаблоны Есть более сложный шаблон, Где есть в ячейках формулы с вычислением промежуточный итогов, , ячейки с формулами проверки введенных значений. Часть ячеек окрашены, часть Readonly Таких эталонных строк 5-10. А при заполнении реальной отчетности могут быть сотни или тысячи Те нужно хитрое тиражирование новых строк по образцу имеющихся строк Ниже код, который выбран из макроса Ексел, который это делает, и работает на практике несколько лет. Но при большом числе строк он начинает тормозить. Нет ли способа ускорения по примеру выше? Перед вызовом должна быть активирована рабочая страница lopage.activate lnrows число добавляемых строк. EXLS.activesheet.Protect("tesla",,,,,,,,.T.) EXLS.activesheet.Unprotect("masha") For counter = 1 To lnrows lastrow = EXLS.Cells(EXLS.Cells.Rows.Count, "A").End(-4162).Row EXLS.Rows(lastrow).AutoFill(EXLS.Rows(lastrow).Resize(2), 0) If Type('EXLS.Rows(lastrow + 1).SpecialCells(2)') = 'O' EXLS.Rows(lastrow + 1).SpecialCells(2).ClearContents Endif EXLS.Rows(lastrow + 1).SpecialCells(4).Item(1).Activate EXLS.Rows(lastrow - 1).Select EXLS.Selection.Copy EXLS.Rows(lastrow).Select EXLS.Selection.PasteSpecial(-4122, -4142, .F., .F.) EXLS.Application.CutCopyMode = .F. Endfor EXLS.activesheet.Protect("masha",,,,,,,,.F.,,,,.T.) Исправлено 1 раз(а). Последнее : boba, 23.06.17 10:21 |
Re: Снова про ускорение добавления строк в Excel | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Копирование форматов? Я делал цикл с удвоением. Код не приведу, но общий смысл такой
0. Есть образцовая строка шаблона Excel 1. Определяем общее количество строк, в которые надо скопировать формат 2. Организуем цикл с удвоением копируемых строк - Выделяем образцовую строку - Копируем одну строку - Выделяем 2 строки (образцовую, и только что созданную) - Копируем 2 строки - Выделяем 4 строки (все созданные с образцовым форматом) - Копируем 4 строки (...) - Выделаем количество строк, равное остатку (из тех, которые имеют нужный формат) - Копируем оставшееся количество строк Это, разумеется, если строки идут без разрывов |
© 2000-2024 Fox Club  |