Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Работа в Word   Найти похожие ветки 

 
Юрий Федоров ©   (2004-02-05 21:02) [0]

Доброе время суток.
По долгу службы пришлось парсить документы Word.
Складывается непонятная (и неприятная ситуация)
Два варианта
1. Word уже запущен, и целевой документ в нем открыт.
Я действую по совету Тенцера - подключаюсь к уже запушенной копии и запускаю процесс
2. Word не был запущен (или был, но целевой документ в нем не открыт)
Действую стандартно
CreateOleObject(еслпи надо), открываю документ. и запускаю процесс.
Проблема
Вариант 2 работает приблизиительно в 5 раз медленнее, чем вариант 1.
Какие будут мысли?
Версия офис - 2000
Единственное, что я пока придумал как возможную причину - у меня непропатченный Word...


 
Nikolay M. ©   (2004-02-05 21:12) [1]

А работает медленно именно подъем СОМ-сервера или собственно работа с ним?


 
Юрий Федоров ©   (2004-02-05 21:18) [2]

собственно работа
подъем - это понятно, что какое-то время должно занять


 
Nikolay M. ©   (2004-02-05 22:16) [3]


> подъем - это понятно, что какое-то время должно занять

Ну естественно.
А ты через раннее или позднее?
Кстати, может, у тебя ворд во втором случае видимый или сообщения обрабатывает?


 
Юрий Федоров ©   (2004-02-05 22:23) [4]

Через раннее.
_Application скрываю (Visible:=false);
Впрочем, от этого не зависит (у меня только чтение документа)
Насчет сообщений - не в курсе, как определить, обрабатывает или нет ?


 
Nikolay M. ©   (2004-02-05 22:30) [5]

Попробуй
WordApp.ScreenUpdating[LOCALE_USER_DEFAULT] := False;
или
WordApp.EnableEvents := False;
?


 
Юрий Федоров ©   (2004-02-05 23:24) [6]

По логике все наоборот
если документ был (на экране, видимый всем) - то нормально
если его не было - морозит
:-(


 
Rouse_ ©   (2004-02-05 23:44) [7]

Скорее ошибка в том что парсерить ты начинаешь при создании объекта TMSOfficeExecutor в котором у тебя и происходит FApp:=CreateOleObject(sApp) as _Application; (сори что переношу беседу из аси...)
А я советую, делать
FApp := CreateOleObject("Word.Application");
FApp.Documents.Open(FileName := "c:\tmp.doc", ReadOnly:=False);
FApp.Visible := False;

при запуске программы... т.е. немного пересмотреть логику приложения...
В итоге к моменту самого начала процесса парсинга у тебя будет открытый ворд с документом, с которым можно спокойно работать...


 
Юрий Федоров ©   (2004-02-06 00:27) [8]

>>Rouse_ © (05.02.04 23:44) [7]
Так вот ведь
FApp:=CreateOleObject(sApp) as _Application; (сори что переношу беседу из аси...)
via
FApp := CreateOleObject("Word.Application");

Это то же самое

далее опять то же самое
то есть смысл вопроса
почему отличается скорость выполнения методов (уже при парсинге) в случае открытия документа визуальными средствами Word против случая открытия его же средствами методов Word как COM объекта

разумеется к началу парсинга у меня уже есть открытый ворд с документом (иначе что бы я стал парсить)


 
Nikolay M. ©   (2004-02-06 09:26) [9]


> разумеется к началу парсинга у меня уже есть открытый ворд
> с документом (иначе что бы я стал парсить)

Ну, если время поджимает, можно с глюками ворда не разбираться, а пойти по пути наименьшего сопротивления: открыть документ через шелл и цепляться к уже открытому документу :)
А можешь мне на мыло минимальный кусок тормозящего кода кинуть? Даже интересно, черт возьми.


 
REA ©   (2004-02-06 10:39) [10]

Не в тему, но по теме: вопросы автоматизации ворда-эксела вылезают очень часто - может складывать куда-то найденные решения (Word tips"n"tricks)?



Страницы: 1 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-53566
iosafat
2004-02-09 10:16
2004.02.17
Какой CHARSET выбрать?


4-53805
K@rt
2003-12-13 16:16
2004.02.17
Запись в файл


7-53787
Dima2002
2003-12-02 20:13
2004.02.17
Проблема со сложением значений дата и время


1-53543
JediMaster
2004-02-05 12:51
2004.02.17
Сложение чисел в 2ичной системе счислени!


1-53531
jiurajhgjhgty
2004-02-05 16:14
2004.02.17
Как запустить а затем закрыть внешнее приложение.