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

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

15 Август 2022, 21:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 13


« Ответ #60102: 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
Записан
Страниц: 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!