Страницы: 1
RSS
Медленная работа в microsoft excel 2010
 
Здравствуйте
Столкнулся с такой проблемой. Написал макрос в экселе, который создаёт документ ворд, и переносит данные из таблицы эксель в документ ворд и при этом рисует таблицу в ворде. И в эту таблицу вставляет данные. Писал макрос в 2003 экселе и заполнение 5 страниц занимало около 15 минут. Когда попробовал этот макрос в 2007, время построения не изменилось. А вот когда попробывал в 2010, то всё сразу затормозило и на эти же 5 страниц надо около 5 часов. (пробывал макрос на новом компе, на котором установлен был только 2010 и другие версии не устанавливались)  После того как я поставил на комп 2007 эксель, то на построение стало тратится снова 15 минут. Причём как в 2007 экселе, так и в 2010.
Скажите в чём может быть причина и как сделать так, чтобы не устанавливая эксели более старые (2003, 2007) макрос работал быстрее в 2010?
 
1) если работа с буфером обмена. то это всегда долго и нужно много оперативки.
2) возможно Ваш макрос слишком нерациональный. но сказать что-то конкретное без примера сложно.
3) А вдруг Вы постоянно открываете и закрываете word
4) А может у Вас наставлено куча надстроек, которые долго загружаются.
5) Каким образом вы знаете что отправляете именно в 2010 офис? Насколько я понял у вас их стоит 3. А если это так, то у Вас должна проходить идентификация(предварительная настройка) того офиса, который вы открываете, а это сильно снижает работу.
6) почему не написать макрос в word?
Выбирайте любой вариант.

P.S. Ах да забыл, в чем такая необходимость именно создавать таблицу в word, неужели нельзя создать полный шаблон таблицы, скажем на 2-м листе, а в ворд просто ее скопировать, пусть даже и программно?
Изменено: Антон - 13.01.2014 11:26:44
 
Цитата
макрос в экселе, который создаёт документ ворд, и переносит данные из таблицы эксель в документ ворд и при этом рисует таблицу в ворде
Поделюсь опытом.
Была задача обработать около 50 файлов htm,в каждом до 200 таблиц + обработка,вывести  все таблицы  в файл ворда.
Классический макрос работал около  5 часов.
Я решил задачу созданием файла RTF.
Итого время на обработку максимум 5 минут.
Писать в текстовик намного быстрее,чем с вордом работать.
Исходники у меня не остались.
 
Здравсвуйте Антон.
1) По поводу буффера обмена ничего не скажу. Просто непонятно почему добавив только версию ниже, макрос начинает нормально работать.
2) Макрос наверняка написан нерационально с точки зрения программирования, но по другому не смог.
3) Нет я его не закрываю и не открываю постоянно
4) Может и куча настроек, но после того как я поставил 2007, то всё заработало нормально.
5) Когда я писал макрос то у меня стояли все эксели и макрос во всех работал быстро. Потом я решил его испробовать на другом компьютере, на котором был изначально установлен только эксель 2010.(другие версии экселя не устанавливались). И на этом компьютере макрос показал свою тормозную работу.  Когда я на этот комп поставил дополнительно эксель 2007, то макрос стал работать быстро и в 2007 и в 2010.
6) Идея написать макрос в ворд была, но мне надо переносить данные из экселя, поэтому писал в экселе.( Идея шаблона присутствовала, наверное позже я её реализую, но сейчас пока так.)

P.S. Таблиц будет потом много, а руками копировать напрягает
Изменено: Slaventy - 13.01.2014 12:30:28
 
1) Вы создаете фигуры а не таблицу. Вернее множество фигур, это в корне неправильно. Чем большее количество фигур будет в документе. тем дольше он будет обрабатываться.
2) Вы сразу же пытаетесь форматировать внутренность фигуры, это ~35% времени.
3) Вы не делаете вставку в скрытом режиме, то есть Ваш документ постоянно обновляется. (еще ~15% времени)
4) Такие вещи, еще и объемные, лучше формировать в екселе и если очень нужно копировать в ворд.
5) Чем плох вариант печати прямо из экселя? Или это диплом, тогда вопрос отпадает.
 
Если хотите использовать фигуры то лучше все это дело связать с Visio И оотуда все печатать и вставлять в ворд. Но думаю это уже лишнее будет.
Все сводится к тому, чтоб вашу существующую табличку правильно разграфить по стандартам спецификации
 
Антон
Печать из экселя не получится, так как рамки имеют строгий стандарт по размерам, а эксель не приспособлен к рисованию рамок и штампов по госту.(это мне объяснили на этом же форуме), поэтому я и делаю в экселе.
Понятно что можно что-то ускорить переписав код, но у меня вопрос состоит в следующем.  
Почему на компьютерах где установлен только эксель 2010 рисуется пять страниц около 5 часов, но если на этот же комп поставить 2007 эксель, то тотже самый макрос в 2010 экселе (ничего не меняю, ничего кроме экселя 2007 не устанавливаю, не меняю не одной настройки в винде и эксела) рисуется за 15 минут.
Почему макрос в версиях более низкой версии работает быстрее, чем в 2010 и начинает работать быстро в 2010, если на компьютер установить дополнительно версию ниже (2003,2007)?
 
ну судя по всему в 2007 работа с фигурами была более упрощенная. Вот например в 2013 ворде работа с фигурами усложнилась, вчера смотрел ролик "что нового в word 2013"
2003 был самый быстродейственный, так как его писали для работы, а 2007 и выше уже для красоты.
 
Я вот так понимаю проблему.
Когда я устанавливаю 2007 эксель в довесок к 2010, он какие-то свои библиотеки или ещё что-то устанавливает. И эксель 2010 этим пользуется и тогда макрос выполняется быстро.
Вот меня и интересует что это такое эксель 2007 делает, что ускоряет работу.
Вопрос на форуме я и задаю, может кто знает, что такое делают версии экселя ниже 2010, что заставляет макрос ускорятся не только в версиях ниже, но и в версии 2010?
 
Вам же говорят - если вы устанавливаете 2007-й после 2010-го, то при создании вордовского документа он вполне может открываться 2007-м приложением. Соответственно, вся работа выполняется 2007-м, невзирая на наличие следующей версии Офиса.
Что же касается быстродействия - то, вроде, тоже объяснили. Попробуйте хотя бы формировать документ в инвизибл.
Ну и насчёт оптимизации - в вашем случае всё же выгоднее использовать Excel только в качестве источника данных. То есть писать макрос для Word VBA...
 
Здравствуйте AndreTM
Вы оказались правы, действительно 2010 эксель создавал объект в 2007 ворде, поэтому и рисовалось быстрее. По поводу попробовать написать макрос в ворде - это я подумаю.
Но мне так и не понятно, почему в 2007 ворде рисуется быстрее,  чем 2010 или тут такое абстрактное объяснение типа потому что 2010 ворд.
Может кто знает, что изменилось в 2010 ворде или надо забыть и плюнуть на попытку найти причину?
Страницы: 1
Читают тему
Наверх