|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.01.2013, 16:24 | #1 |
Регистрация: 18.02.2008
Сообщений: 3
|
Быстрое заполнение таблицы
Здравствуйте.
Заполняю таблицу в Word данными из внешнего источника. Записываю последовательно в каждую ячейку, добавляя новые строки. Но в случае, если данных хотя бы на 15-20 страниц, этот процесс работает довольно долго. Вопрос - возможно ли как-нибудь заполнить таблицу в памяти, а затем вставить ее в документ? Как Copy-Paste, который работает быстро |
23.01.2013, 16:50 | #2 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
CrySTaL, пока такая первая мысль пришла:
Последний раз редактировалось Скрипт; 23.01.2013 в 16:53. |
24.01.2013, 03:25 | #3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Массив в таблицу средствами VBA в Word перенести нельзя, т.к. таблица в Word это средство отображения текста, а не обработки данных как в Excel. Способ, предложенный Скриптом, может оказаться лучшим вариантом по быстродействию.
Если же делать только в Word, то можно отключить обновление экрана пока добавляются данные. Так же на скорость влияет способ перебора ячеек: цикл For...Next работает медленнее, чем Do...Loop Заполнить таблицу в памяти тоже нельзя, т.к. таблица не существует вне документа. Пока писал, в голову пришла идея: сформировать текстовую строку из данных, разделяя ячейки, например, знаком $, а строки — знаком #. Вставить строку в документ, выделить и преобразовать в таблицу по разделителям. Думаю, это будет гораздо быстрее
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 24.01.2013 в 03:27. |
24.01.2013, 07:43 | #4 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Провёл сравнение двух способов создания таблицы в программе Word.
Создавал таблицу из 10 000 строк и 10 столбцов (пробовал больше делать строк, но устал дожидаться окончания работы кода в программе Excel. На типе данных "String" не пробовал больше строк). Способ 1. Использование программы Excel. Результат 175 секунд. Код:
Код:
Последний раз редактировалось Скрипт; 24.01.2013 в 12:00. |
24.01.2013, 11:55 | #5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Провёл и у себя эксперименты:
Excel: 138 сек, 371(!) страница Word: 280 сек., 115 страниц Немного подчистил макросы. Изменённые строки обрамлены звёздочками Способ 1: Запускаем приложение Excel с новой книгой, а не пользуемся окрытым и, сооветственно, после использования закрываем его. Что интересно, львиная доля времени тратится на вставку из буфера, ну а Excel, как и положено превосходно работает с табличными данными. Код:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
24.01.2013, 13:16 | #6 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Скорректировал код с использованием типа данных String. Время составило 40 секунд.
Код написан при условии, что в документе Word ничего нет. Код:
Последний раз редактировалось Скрипт; 24.01.2013 в 13:57. |
24.01.2013, 14:03 | #7 | |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
заполнение таблицы из бд | Damhurz | PHP | 34 | 05.04.2013 14:38 |
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк | yevgeniy.demidov | Microsoft Office Excel | 6 | 06.09.2012 15:27 |
Заполнение таблицы | vvvd | Microsoft Office Excel | 6 | 24.04.2012 22:04 |
Заполнение таблицы | arkvid | Microsoft Office Excel | 10 | 17.11.2010 18:32 |
заполнение таблицы | Andreyka | Общие вопросы Delphi | 6 | 07.02.2009 22:18 |