![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.02.2008
Сообщений: 3
|
![]()
Здравствуйте.
Заполняю таблицу в Word данными из внешнего источника. Записываю последовательно в каждую ячейку, добавляя новые строки. Но в случае, если данных хотя бы на 15-20 страниц, этот процесс работает довольно долго. Вопрос - возможно ли как-нибудь заполнить таблицу в памяти, а затем вставить ее в документ? Как Copy-Paste, который работает быстро ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]()
CrySTaL, пока такая первая мысль пришла:
Последний раз редактировалось Скрипт; 23.01.2013 в 16:53. |
![]() |
![]() |
![]() |
#3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Массив в таблицу средствами VBA в Word перенести нельзя, т.к. таблица в Word это средство отображения текста, а не обработки данных как в Excel. Способ, предложенный Скриптом, может оказаться лучшим вариантом по быстродействию.
Если же делать только в Word, то можно отключить обновление экрана пока добавляются данные. Так же на скорость влияет способ перебора ячеек: цикл For...Next работает медленнее, чем Do...Loop Заполнить таблицу в памяти тоже нельзя, т.к. таблица не существует вне документа. Пока писал, в голову пришла идея: сформировать текстовую строку из данных, разделяя ячейки, например, знаком $, а строки — знаком #. Вставить строку в документ, выделить и преобразовать в таблицу по разделителям. Думаю, это будет гораздо быстрее
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 24.01.2013 в 03:27. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]()
Провёл сравнение двух способов создания таблицы в программе Word.
Создавал таблицу из 10 000 строк и 10 столбцов (пробовал больше делать строк, но устал дожидаться окончания работы кода в программе Excel. На типе данных "String" не пробовал больше строк). Способ 1. Использование программы Excel. Результат 175 секунд. Код:
Код:
Последний раз редактировалось Скрипт; 24.01.2013 в 12:00. |
![]() |
![]() |
![]() |
#5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Провёл и у себя эксперименты:
Excel: 138 сек, 371(!) страница Word: 280 сек., 115 страниц Немного подчистил макросы. Изменённые строки обрамлены звёздочками Способ 1: Запускаем приложение Excel с новой книгой, а не пользуемся окрытым и, сооветственно, после использования закрываем его. Что интересно, львиная доля времени тратится на вставку из буфера, ну а Excel, как и положено превосходно работает с табличными данными. Код:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
![]()
Скорректировал код с использованием типа данных String. Время составило 40 секунд.
Код написан при условии, что в документе Word ничего нет. Код:
Последний раз редактировалось Скрипт; 24.01.2013 в 13:57. |
![]() |
![]() |
![]() |
#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 |