Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Октябрь 2021, 17:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 3 »   Вниз
  Печать  
Автор Тема: После обработки документа во Writer из макроса нельзя закрыть приложение  (Прочитано 1211 раз)
0 Пользователей и 1 Гость смотрят эту тему.
karzan
Участник
**
Offline Offline

Сообщений: 13


« Стартовое сообщение: 13 Октябрь 2021, 13:32 »

Добрый день, Уважаемые!

Столкнулись с проблемой в работе LO после работы макросов.
В среде VBS макрос на StarBasic открывает во Writer шаблон (*.dot например) вносит изменения в поля, сохраняет и закрывает документ, либо оставляет на просмотр.
При первом открытии документа в LO приложение не возможно закрыть, ни через закрытие окна, ни через меню. Не реагирует на закрытие приложения никак.
Только Диспетчер задач может убить приложение. После чего открытие проблемы не вызывает...

Подскажите куда ковырять?  Непонимающий
Пробовал варианты после закрытия файла через oDoc.Close(true) еще и закрытия oDesktop.terminate/dispose. Не помогает.
Коллега пробовал убивать фоновые процессы либры через WScript.Shell. Не то. "Висит" именно само приложение с открытым файлом.

Win 10 (x64)
LO 7.1.3.2(x64)

Отдельно отмечу, что на версии 6.4.4.2 (х86) такой проблемы не наблюдается...
Вариант Менять версию Либры не рассматривается...
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 358



« Ответ #1: 13 Октябрь 2021, 13:38 »

Что такое VBS ?
Файл проблемный приложите
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #2: 13 Октябрь 2021, 13:57 »

VBS - windows интерпретатор Visual Basic Script.

Программа не замысловатая, повторяющиеся замены букмарков убрал.

Dim ServMan, Dsctp, WriteDoc, arg(1), TFields, XFields, BFields, MField, TField, i, k, XField, oDisp, Ar(0), Args(0), mPrinter(0)

         ServMan = CreateObject("com.sun.star.ServiceManager")
         Dsctp = ServMan.createInstance("com.sun.star.frame.Desktop")
         oDisp = ServMan.createInstance("com.sun.star.frame.DispatchHelper")

         On Error Resume Next
         Err.Clear

         arg(0) = ServMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
         arg(0).Name = "AsTemplate"
         arg(0).Value = True
         arg(1) = ServMan.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
         arg(1).Name = "Hidden"
         arg(1).Value = True   'False   '

         WriteDoc = Dsctp.loadComponentFromURL("file:///c:/1/mail_1.dotx", "_blank", 0, arg)

         If Err <> 0 Then
          Dim Msg
          Msg = "Ïðîâåðüòå ïðàâèëüíîñòü óêàçàíèÿ ïóòè è èìåíè ôàéëà c:/1/mail_1.dotx"
          MsgBox Msg, , "Íå óäàåòñÿ îòêðûòü ôàéë"
         End If

         Set BFields = WriteDoc.getBookmarks()
         If BFields.hasByName("P_FIL_NAME1") Then
            BFields.getByName("P_FIL_NAME1").getAnchor.String = "Ìîñêîâñêèé áàíê"
         End If

         Table = WriteDoc.TextTables.getByIndex(0)
         Call Table.Rows.insertByIndex(6, 1)

         Call WriteDoc.TextTables.getByIndex(0).getCellByPosition(0, 6).setString("Èíôîðìàöèþ î íàëè÷èè ñ÷åòîâ íà 11.10.2021")

                        XFields = WriteDoc.TextFields.createEnumeration
                        Do While XFields.hasMoreElements
                            XField = XFields.nextElement
                            If XField.supportsService("com.sun.star.text.TextField.PageCount") Then
                                XField.Update
                            End If
                        Loop

Call WriteDoc.storeAsURL("file:///C:/TEMP/SP_452537_123456789047_20211013_01.doc", Ar)
Call WriteDoc.Close(True)

Start = Time
Do
Loop While (Time - Start) * 86400000 < 300


' Call Dsctp.Terminate
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 358



« Ответ #3: 13 Октябрь 2021, 14:12 »

Я просил сам файл, который вешает ЛО, а не макрос на VBA
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 190


« Ответ #4: 13 Октябрь 2021, 14:23 »

Это  vbs макрос. Не понятны извращения, в LO с форматом МСО

Попробуйте для отладки hidden в false установить, возможно у вас скрытый документ висит
« Последнее редактирование: 13 Октябрь 2021, 14:32 от Bigor » Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #5: 13 Октябрь 2021, 14:37 »

Внутри zip dotx-шаблон. Второй результат.
Проблема не только в одном файле, это общая проблема для выгрузки через Либру в формат MS Word и первое открытие в Либре.
Проявляется в LO 7.1.3.2(x64)

Вариант с видимым заполнением файла приводит к той же проблеме.

* SP_01.doc (8.46 Кб - загружено 5 раз.)
* mail_a1.zip (14.19 Кб - загружено 7 раз.)
Записан
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #6: 13 Октябрь 2021, 14:42 »

Не понятны извращения, в LO с форматом МСО
Если б это не работало в  6.4.4.2 (х86), можно было бы думать про извращения. Но там работает нормально, и связано это очевидно с версией LO.
В поиске возможных вариантов решения ...

Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 1 190


« Ответ #7: 13 Октябрь 2021, 14:59 »

Да просто непонятно, если работаете с либрой, зачем используете форматы МСО
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
karzan
Участник
**
Offline Offline

Сообщений: 13


« Ответ #8: 13 Октябрь 2021, 15:05 »

Документы приходится отправлять в разные инстанции, там с либрой не дружат...
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 358



« Ответ #9: 13 Октябрь 2021, 15:45 »

Да просто непонятно, если работаете с либрой, зачем используете форматы МСО
Это везде так. Давайте по существу.
Человек столкнулся с проблемой, похоже на регрессию. Вот сейчас и поковыряем
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 358



« Ответ #10: 13 Октябрь 2021, 15:48 »

@karzan: а теперь по шагам распишите, что и как вы делаете с этими файлами и что не так в итоге. Я спокойно открыл и закрыл оба файла в LibreOffice, никаких проблем
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #11: 13 Октябрь 2021, 16:05 »

' Call Dsctp.Terminate
А раскомментирование этой строки не меняет ситуацию?
Записан

С уважением,
Михаил Каганский
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #12: 13 Октябрь 2021, 16:30 »

Обратите внимание, что on error resume next совместно с циклами типа while очень небезопасно. Например, у меня намертво виснет в цикле Do While XFields.hasMoreElements, когда документ не найден. Потому что условие генерирует ошибку - продолжается следующая строка (внутри цикла) - в конце концов доходит до Loop - и всё сначала.

Сейчас попробую с документом.
Записан

С уважением,
Михаил Каганский
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #13: 13 Октябрь 2021, 16:35 »

А когда документ на месте, всё работает как надо. И ЛО закрывается. Конечно, при раскомментированной строке, указанной в ответе 11.
Записан

С уважением,
Михаил Каганский
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 341


« Ответ #14: 13 Октябрь 2021, 16:42 »

Вот тестовый скрипт - слегка деформированный при тестировании - если кому-то хочется потестировать

* test.zip (1.07 Кб - загружено 6 раз.)
Записан

С уважением,
Михаил Каганский
Страниц: 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!