Имя: Пароль:
1C
 
Как ускорить запись в Ексель защищенный?
0 RomaH
 
naïve
11.02.18
16:11
327    Excel.Application.Run(Имяфайла + "!AddRowF");    32    41,122671    28,42
339    Лист3.Range("B" + НомерСтр).Value = Стр.ПациентНаименование;    307    11,080234    7,66
343    Лист3.Range("F" + НомерСтр).Value = Стр.ФИОРодственника;    306    10,038958    6,94
340    Лист3.Range("C" + НомерСтр).Value = Стр.ДатаРождения;    307    9,855679    6,81
341    Лист3.Range("D" + НомерСтр).Value = Стр.СерияПаспорта + " " + Стр.НомерПаспорта;    307    9,677820    6,69
366    Лист3.Range("R" + НомерСтр).Value = Стр.Организация2009Наименование;    306    9,616122    6,65
363    Лист3.Range("K" + НомерСтр).Value = Стр.Кратность;    306    9,569813    6,61
342    Лист3.Range("E" + НомерСтр).Value = Строка(Стр.КатегорияВнереализация);    306    9,500092    6,57


т.е. сначала встроенным макросом добавляется нужное количество строк (10 строк в секунду - а надо 10 000)
потом в каждую строку пишутся значения - 30 шт в сек * 7 - т.е. примерно 4 строки в секунду

есть варианты ускорить?
1 RomaH
 
naïve
11.02.18
16:11
Excel = Новый COMОбъект("Excel.Application");
2 RomaH
 
naïve
11.02.18
16:12
еще раз - книга защищена, добавление строк можно делать только макросом
3 vde69
 
11.02.18
16:20
COM - это и есть макрос

ну а еще - 10к строк в еселе - пошли заказчика нафиг... и сделай ему нормальный отчет на компоновке..
4 Изучаю1С8
 
11.02.18
16:27
(3) +++
Никто не смотрит отчеты в 10к строк.
5 shadow_sw
 
12.02.18
04:34
вывести в табдок, сохранить в эксель, копировать массив в нужный документ
6 АНДР
 
12.02.18
05:16
отключить отображение и авторасчет на момент вывода,  пересчитать книгу после.

использовать шаблон со сгенеренным пулом ячеек
7 RomaH
 
naïve
12.02.18
07:16
(7)
Excel.Visible    Ложь    Булево
https://www.dropbox.com/s/tk3dvujo3sizkjs/2018-02-12_07h12_28.png?dl=0

авторасчет вроде отключил (но файлик-то защищенный)

разницы не заметил

а вот с пулом ячеек - мысль - хоть немного, но сократит время генерации
8 Лефмихалыч
 
12.02.18
07:26
(0) думаю, если ты сделаешь самостоятельно файл экселя, у которого колонки будут в точности на том же месте, то ни кто не заметит разницы.
Еще можно попытаться договориться о каком-то другом формате взаимодействия. С того конца могут даже обрадоваться такому предложению
9 Йохохо
 
12.02.18
07:35
10 Защитник009
 
12.02.18
20:08
Можно ещё и так сделать 3dnews.ru/582339
11 RomaH
 
naïve
12.02.18
20:56
прикол еще в чем
на win xp эта штука отрабатывает за 2.5 часа
а на win 7 и более - мы так и не дождались завершения за 3 суток
макрос работает через буфер
ексель - тот который xls
12 RomaH
 
naïve
12.02.18
20:56
(10)
После инсталляции набора макросов PLEX (431 кб; 500 руб.; демо-версия на 500 запусков)
13 Йохохо
 
12.02.18
22:32
(11) то, что он защищен мешяет делать oSheet.Range("A2").Resize(100, 3).Value = DataArray ?
14 Йохохо
 
12.02.18
22:33
15 cons74
 
13.02.18
06:48
(11) 2.5 часа... налицо ошибка архитектуры, которая скорее всего следствие кривой постановки задачи
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший