Закрыть ОО макросом

Автор adi_den2013, 13 февраля 2014, 11:37

0 Пользователи и 1 гость просматривают эту тему.

adi_den2013

Макрос просто закрывает форму (с сохранением БД). Мне нужен одновременно выход из OpenOffice. Не могу найти что-то типа EXIT

Sub Exit_balans
dim document as object
dim dispatcher as object
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
        ThisComponent.CurrentController.Frame.close(true)
End Sub
Яна (in real)

Yakov

Скорей всего, из Basic сделать это нельзя, зато можно сделать из Python.
А из  Basic вызвать макрос на Python.

adi_den2013

Пока обойдусь стандартным Ctrl+Q.

Язык Python не знаю.
Яна (in real)

adi_den2013

Цитата: adi_den2013 от 13 февраля 2014, 09:37dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())

Кстати - это ведь сохранение формы как документа, а не БД. Как сохранить базу данных?
Яна (in real)

JohnSUN

Ян, а ты уверена что нужно закрыть ВЕСЬ офис? Такой вариант существует, но стрёмно... А вдруг у человека помимо твоей базы в том же офисе была открыта пачка документов и таблиц с кучей правок, а тут - оп-па! - "тебе это всё не надо, закрываемся!"

Если все-таки хочешь закрываться полностью, посмотри у Питоньяка  5.8. Open And Close Documents (And The Desktop)

А база сохраняется, кажется, через ThisComponent.getParent().DataSource.DatabaseDocument.store()
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Yakov

#5
Посмотрел команды диспетчера:
https://wiki.openoffice.org/wiki/Framework/Article/OpenOffice.org_3.x_Commands

.uno:Close  - закрывает текущее окно


а вот .uno:CloseDoc закрывает компонент

Sub Exit_balans
dim document as object
dim dispatcher as object
  document = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
  dispatcher.executeDispatch(document, ".uno:CloseDoc", "", 0, Array())

End Sub


adi_den2013

#6
Цитата: JohnSUN от 13 февраля 2014, 11:29Ян, а ты уверена что нужно закрыть ВЕСЬ офис?

Вот уж уверена! Бухгалтерия - привилегированный класс, одни из многих не перешедшие из платного офиса на бесплатный  >:( .

Поэтому такая круговерть с оборотом документов OpenOffice Writer (только этот отчет)-> Microsoft Word (вся остальная документация)-> Acrobat Reader(PDF) потому, что Word не понимает ссылки на переменные которые формируются программно и ругается / чтобы красиво выглядело на печати/

И еще - мне нужно заблокировать доступ к таблицам, который открывается просто при закрытии главной формы. Чтобы не  разгребать потом руины после случайно натыканных кнопок..
Яна (in real)

JohnSUN

Цитата: adi_den2013 от 13 февраля 2014, 13:40Бухгалтерия - привилегированный класс...
О, да! "В древней Спарте толстых и некрасивых женщин скидывали в бухгалтерию."
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне