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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

gromov писал(а): 01 Апрель 2022, 20:16 Ворд закрыт, а OLE не убит.
Вы меня не слышите! Когда Ворд закрыли, проблем нет.
Ворд ЗАБЫЛИ закрыть и файл создают второй раз. Ворд открывается второй раз, а файл с тем же именем. Файл с тем же именем весит открытый в первом ворде. Надо в этом случае прервать Клашку.
gromov
Старожил
Сообщения: 263
Зарегистрирован: 11 Февраль 2009, 8:41
Откуда: г. Анапа
Поблагодарили: 3 раза

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

Сообщение gromov »

А вы читаете, что вам пишут или как ? Открывайте файл с УНИКАЛЬНЫМ ИМЕНЕМ.
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

gromov писал(а): 02 Апрель 2022, 0:23 А вы читаете, что вам пишут или как ? Открывайте файл с УНИКАЛЬНЫМ ИМЕНЕМ.
Да вы правы, что можно поменять имя, но как его менять? На любом открытии давать новое имя или давать новое имя когда "файл уже занят другим Вордом". Я думаю что второй вариант более правильный.
И вот вопрос: А как узнать что "файл уже занят другим Вордом".

У меня в Ворде формируется ответ на письмо, например входящее письмо имеет номер: 2545 и мне бы хотелось иметь выходной файл 2545.doc
Я не имею ничего против 2545_1.doc или 2545_2.doc....., но довесок к имени когда делать?

Я вам еще раз говорю: сама Клашка знает, что "файл уже занят другим Вордом", потому как она дает сообщение: Сообщение: "Данная команда недоступна". По какому критерию она это сообщение сделала???? Вот и весь вопрос... только нужен ответ.
Последний раз редактировалось mpn2 02 Апрель 2022, 10:51, всего редактировалось 2 раза.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

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

Сообщение finsoftrz »

Можно проверить наличие файла и попробовать его удалить. Не удалился, значит открыт в другой программе (ворде).
Я для экселя (для ворда аналогично можно) использую временные файлы в каталоге пользователя - 1.xls, 2.xls и т.п. Перед экспортом специальная функция возвращает очередное свободное имя. Удаление временных файлов происходит автоматически при запуске программы пользователем. Стратегии тут могут быть разные.
C6/C11, ШВС, tps/btrieve.
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

Снимок1.JPG
finsoftrz писал(а): 02 Апрель 2022, 10:49 Можно проверить наличие файла и попробовать его удалить.
mpn2 писал(а): 02 Апрель 2022, 10:36 Я вам еще раз говорю: сама Клашка знает, что "файл уже занят другим Вордом", потому как она дает сообщение:
Сообщение: "Данная команда недоступна".
По какому критерию она это сообщение сделала ????
Данное сообщение формируется при попытке выполнения вот этой команды и только тогда когда файл уже занят другим Вордом:

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

MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

Сообщение Дед Пахом »

mpn2 писал(а): 02 Апрель 2022, 10:36 Я вам еще раз говорю: сама Клашка знает, что "файл уже занят другим Вордом", потому как она дает сообщение: Сообщение: "Данная команда недоступна". По какому критерию она это сообщение сделала???? Вот и весь вопрос... только нужен ответ.
"Клашка" ничего не знает ни о Ворде, ни о файлах в нём открытых, и сообщение это посылает не она.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

mpn2 писал(а): 02 Апрель 2022, 11:04 только тогда когда файл уже занят другим Вордом
Мы не знаем, что у Вас используется в качестве шаблона ...
Посмотрите пожалуйста вот здесь:
https://forum.infostart.ru/forum9/topic164098/
https://forum.mista.ru/topic.php?id=825419&
Может быть это Ваш случай ?
За теми кто отстал - не возвращаться. (С) Кодекс
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

Дед Пахом писал(а): 02 Апрель 2022, 11:28 "Клашка" ничего не знает ни о Ворде, ни о файлах в нём открытых, и сообщение это посылает не она.

Да вы правы.... это не Клашка. Я поискал данное сообщение во всех *.clw и во всех *.tpw *.tpl - такого текста нет.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

Раз такая беда, mpn2, качайте пример - viewtopic.php?p=28210#p28210. Там экспорт в Еxcel. Не обращайте внимания на это. В рутине (в конце) посмотрите как надо работать с OLE. Повторю. Создаём OLE-контрол. Открываем файл. Что-то делаем с ним. Пересохраняем. Закрываем Excel. Удаляем OLE-контрол. Открываем файл ShellExecute'ом. Вы можете хоть раз десять нажать на кнопку "Экспорт". Всё работает как надо. И ещё повторю. Принципиальной разницы между Excel и Word нет.
We are hard at work… for you. :)
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

kreator писал(а): 02 Апрель 2022, 18:49 Раз такая беда, mpn2, качайте пример - viewtopic.php?p=28210#p28210.
Спасибо! как нибудь обязательно ваш пример посмотрю, а пока у меня *.app без *.dct не открывается.

Я вышел из ситуации пока вот так: Я запросил у Клашки код ошибки после отработки команды Find.Execute:

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

MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}
   Message(ErrorCode())
В результате клашка дала код: 1011 - при первом открытии Ворда
и клашка дала код: 5 - при повторном открытии Ворда с тем же файлом.
И я написал вот так:

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

Replac_String             ROUTINE
   MSWord1.Control{'Selection.Find.ClearFormatting'}
   MSWord1.Control{'Selection.Find.Replacement.ClearFormatting'}     
   MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}

   if ErrorCode() = 5 then                                                                               ! Если файл уже открыт
      Message('Данный файл уже открыт! Процедура будет прервана!!!')        ! Ругаемся
      Destroy(MSWord1.Control)                                                                      ! Уничтожили OLE-контрол
      do ProcedureReturn                                                                                 ! Прерываем процедуру
   .
Exit
Может с точки зрения профессионального программирования это смешно и через жопу, но меня это вполне устраивает. И заказчик доволен... у него теперь ничего не виснет (если он с дуру попытается открыть файл в Ворде, который уже открыт).
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

mpn2 писал(а): 03 Апрель 2022, 17:45 пока у меня *.app без *.dct не открывается
Требование словаря в проекте можно отключить в настройке (см. рисунок).
А в остальном - я с Вами полностью согласен ... ;)

1.jpg
За теми кто отстал - не возвращаться. (С) Кодекс
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

Игорь Столяров писал(а): 03 Апрель 2022, 19:24 Требование словаря в проекте можно отключить в настройке (см. рисунок).
А в остальном - я с Вами полностью согласен ... ;)
Ага, спасибо!

Да, и если не трудно подскажите не по теме:
Я тут с перепугу написал темплатку копирования записи (месяца 2 назад).... и все работало, а потом решил почистить копм и почистил так, что тепллатку эту стер.
Стал писать заново ... и не могу получить префикс файла.... заклинило меня так, что ума не приложу (что надо зафиксировать? и как у меня это получилось в первый раз)?

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

#!Создаем контрольные поля на кнопке -----------------------------
    #PROMPT('Имя файла:', FILE), %PosFile, REQ
    #PROMPT('Ключ чтения записи', KEY), %PosKey, REQ
    #PROMPT('Процедура Insert:', @s9), %INS, default('?Insert')
#!----------------------------------------------------------------

#!------------------- Фиксируем поля -----------------------------
#AT(%AfterFileDeclarations)
#FIX(%File, %Primary)
????????????????????????? Что еще надо зафиксировать?
#ENDAT
#!----------------------------------------------------------------

#!------ Точка вставки на созданной кнопке -----------------------
#AT(%ControlEventHandling,%ButonControl,'Accepted')
 !Код процедуры: Копирование записи (Начало-F5) ==================
   GET(%PosFile,%PosKey)            !Зачитаем зпись
   Copy%FilePrefix = %FilePrefix:Record               !Запомним запись    ?????????????????????
   POST(EVENT:Accepted,%INS)       !Вызываем процедуру -=Insert=-
 !=====================================================================
#ENDAT
Не могу получить значение %FilePrefix
:(
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

mpn2 писал(а): 04 Апрель 2022, 13:45написал темплатку
Не ко мне. Игорь, темплатки клаши для веников не обучен делать. Совсем. :(
Лучше отдельную тему заведите в специальном разделе. Это бесплатно. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

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

Сообщение Admin »

mpn2 писал(а): 04 Апрель 2022, 13:45 не могу получить префикс файла
Помнится мне что достаточно:

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

#FIX(%File, %Primary)
! use %FilePrefix
Только шаблон должен быть привязан к бровзу через ,REQ(BrowseBox(ABC))
mpn2 писал(а): 04 Апрель 2022, 13:45 а потом решил почистить копм
Стоит начать пользоваться бекапами а лучше github
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
mpn2
Бывалый
Сообщения: 62
Зарегистрирован: 24 Февраль 2015, 17:15

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

Сообщение mpn2 »

Admin писал(а): 04 Апрель 2022, 15:12 #FIX(%File, %Primary)
! use %FilePrefix
Не понимаю я вашу подсказку
Я в темплатке пишу вот так:

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

   Copy%FilePrefix = %FilePrefix:Record               !Запомним запись
а получается вот так:

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

           Copy = :Record               !Запомним запись
У меня к примеру есть файл Street с префиксом STR и я хочу чтобы получилось вот так:

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

           CopySTR = STR:Record               !Запомним запись
Ответить