Страница 5 из 8

Как закрыть WORD после передачи в него данных?

Добавлено: 28 Март 2022, 20:54
Игорь Столяров
finsoftrz писал(а): 28 Март 2022, 20:46 Давайте лучше про позитивчики.
Сегодня у нас в Пятёре возле кассы поставили тележку с сахером и кассир
тролила всех покупателей: Сахарку пакетик по акции не желаете взять ? :)

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 11:14
mpn2
Вот я сделал маленький тест. Если у кого есть время посмотрите.
я конечно прекрасно понимаю, что все написанное мной - написано через жопу и если есть предложения то буду рад!
Проблема вот в чем:
Если передать данные в WORD и WORD закрыть - то проблем нет.
Но 99% пользователей так не работают: они открывают WORD и WORD весит пол дня.
Так вот:
Если передать данные в WORD и WORD НЕ закрывать - а потом передать данные в WORD еще раз - то начинается полная "хрень".
Вот эту "хрень" надо как-то обмануть!

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 11:32
mpn2
Насколько я понимаю: надо как то освободить файл шаблона test.doc и в идеале он должен быть "только для чтения", но!
Но на некоторых машинах, когда он стоит "только для чтения", то WORD его не редактирует.

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 12:12
RaFaeL
Почему бы просто сначала не скопировать шаблон в файл с новым именем функцией copy, а уже затем его открыть в Word?

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 12:16
Игорь Столяров
mpn2 писал(а): 29 Март 2022, 11:14 Если передать данные в WORD и WORD закрыть - то проблем нет.
В чём мы Вас и убеждаем несколько дней ... по Вашему первому вопросу.
У меня пример не открывается - т.к. нет шаблонов. Пример - это PRJ + CLW
RaFaeL писал(а): 29 Март 2022, 12:12 Почему бы просто сначала не скопировать шаблон в файл с новым именем функцией copy, а уже затем его открыть в Word?
Абсолютно верно. Именно так и обрабатываются шаблоны отчётов.

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 12:41
mpn2
Игорь Столяров писал(а): 29 Март 2022, 12:16 Абсолютно верно. Именно так и обрабатываются шаблоны отчётов.
Да я это тоже понимаю на бытовом уровне, а как это сделать?
Вот я пишу:

Код: Выделить всё

  feqOLE{'Documents.Open("'& clip(Loc:WordFileName) &'")'}                                      ! Открываем шаблон документа
  feqOLE{'Application.ActiveDocument.SaveAs2("'& Clip(Loc:SaveFileName) &'")'}        ! сохранили документ под другим именем

   do Find_Replace                                                                                                    !Заполняем документ данными
Но проблема в том, что файл шаблона остается занят WORDом.

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 19:56
RaFaeL

Код: Выделить всё

copy(Loc:WordFileName,Loc:SaveFileName)
feqOLE{'Documents.Open("'& clip(Loc:SaveFileName) &'")'}
do Find_Replace

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 20:28
mpn2
RaFaeL писал(а): 29 Март 2022, 19:56 copy(Loc:WordFileName,Loc:SaveFileName)
feqOLE{'Documents.Open("'& clip(Loc:SaveFileName) &'")'}
do Find_Replace
Вот! уже хорошо уже не ругается.

Код: Выделить всё

   feqOLE{'Documents.Open("'& clip(Loc:WordFileName) &'")'}                            ! Открываем шаблон документа
   copy(Loc:WordFileName,Loc:SaveFileName)
   feqOLE{'Documents.Open("'& clip(Loc:SaveFileName) &'")'}
НО! WORD открывается 2 раза и файл где будет результат и шаблон ..... и если шаблон "только для чтения", то файл-результат тоже открывается "только для чтения".
Было бы хорошо, если бы WORD с шаблоном закрывался, а файл-результат был бы НЕ "только для чтения".

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 20:42
gromov
А нахрена окрывать шаблон ? Чисто штоб открыть ? RaFael привел рабочий код. Делается копия шаблона. Эта копия открывается и она будет НЕ "только для чтения".

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 20:50
mpn2
gromov писал(а): 29 Март 2022, 20:42 А нахрена окрывать шаблон ? Чисто штоб открыть ? RaFael привел рабочий код. Делается копия шаблона. Эта копия открывается и она будет НЕ "только для чтения".
Пардон! Я думал шаблон надо открыть!

Код: Выделить всё

 copy(Loc:WordFileName,Loc:SaveFileName)
   feqOLE{'Documents.Open("'& clip(Loc:SaveFileName) &'")'}
Да вот так работает корректно! Спасибо!
Открыл WORD 30 раз ---- ничего не виснет! Спасибо!
Я еще кнопочку сделал:

Код: Выделить всё

Run('pskill WINWORD.exe',1)  ! Закрываем Word 
Вообще стало ХОРОШО!
:)

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 20:58
Игорь Столяров
Почему-то вспомнил анекдот, как молодожёны ходили по кабинетам в поликлинике ...
Но расказывать - не буду ! :)

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 21:02
gromov
А чо так ? Стесняетесь ? :D

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 21:03
gromov
Я WordControl убиваю так:
Loop 3 times
Destroy(WordControl) ! уничтожили OLE-контрол
end
Работает.

Как закрыть WORD после передачи в него данных?

Добавлено: 29 Март 2022, 21:15
Игорь Столяров
gromov писал(а): 29 Март 2022, 21:02 А чо так ? Стесняетесь ?
Та не. Я за здоровую атмосферу.
Хотя, в данном случае, именно ответ с хренами дал результат ... ;)

Как закрыть WORD после передачи в него данных?

Добавлено: 01 Апрель 2022, 3:29
kreator
mpn2 писал(а): 28 Март 2022, 15:41
Игорь Столяров писал(а): 28 Март 2022, 14:18 Я извиняюсь, а можно спросить, с какой версией офисного пакета Вы работаете ?
Не могу вспомнить даже, когда была такая картинка в диспетчере, с WINWORD.EXE и т.д. ...
Word14
- - - - - - - -
А что это? Спецсборка наших умельцев?