Макрос закрытия файла LibreOffice по таймеру

Автор vlvshein, 30 августа 2022, 16:10

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

vlvshein

Добрый день. Нужна помощь специалиста по макросам в LibreOffice. Задача следующая: Написать макрос закрытия файла (таблица) с сохранением данных через определенное время. Такой же файл в Excel работает отлично. Нашел макрос для Excel, но в LibreOffice выкидывает ошибку.

Private Sub Auto_Close()
Dim DateTime As Date
    DateTime = Now + #12:10:00 AM#
    Application.OnTime DateTime, "TimeOut"
End Sub
 
Private Sub Workbook_BeforeClose1(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime DateTime, "TimeOut", , False
End Sub
Private Sub TimeOut()
    ThisWorkbook.Close True
End Sub

Заранее благодарен за помощь.

sokol92

#1
LibreOffice эмулирует не все свойства и методы объектов Excel.

Метод Application.Ontime ... поддерживается (два года я считал, что это не так, и даже разработал сложный путь для обхода).  :)
Когда у меня будет полноценный доступ к системе с LO, подправлю Ваш пример.
Владимир.

sokol92

Прилагаю для тестирования файл, который закрывается через одну минуту после открытия (с сохранением).
Ваш макрос изменен в минимальной степени.
Измените время автозакрытия с одной минуты на требуемое Вам.
Обратите внимание на закладку События (Events) в Меню / Сервис / Настройка.

Option VbaSupport 1
Option Explicit

Sub Doc_open(ByVal oEvent)
  Dim DateTime As Date
  DateTime = Now + 1/24/60            ' для тестирования - закроется через 1 минуту после открытия
  Application.OnTime DateTime, "Standard.Module1.CloseDoc"
End Sub

Sub CloseDoc
  ThisWorkbook.Close True 
End Sub
Владимир.

vlvshein


vlvshein

Цитата: sokol92 от 31 августа 2022, 17:05Прилагаю для тестирования файл, который закрывается через одну минуту после открытия (с сохранением).
Ваш макрос изменен в минимальной степени.
Измените время автозакрытия с одной минуты на требуемое Вам.
Обратите внимание на закладку События (Events) в Меню / Сервис / Настройка.

Option VbaSupport 1
Option Explicit

Sub Doc_open(ByVal oEvent)
  Dim DateTime As Date
  DateTime = Now + 1/24/60            ' для тестирования - закроется через 1 минуту после открытия
  Application.OnTime DateTime, "Standard.Module1.CloseDoc"
End Sub

Sub CloseDoc
  ThisWorkbook.Close True 
End Sub

Проверил, файл не закрывается, но если принудительно я захожу в макросы и даю команду выполнить, то отрабатывает. Может быть я не так что делаю. В LibreOffice никогда не приходилось иметь дело с макросами.

И еще вопрос, что то нужно делать здесь: События (Events) в Меню / Сервис / Настройка?

sokol92

Цитата: vlvshein от 31 августа 2022, 17:28И еще вопрос, что то нужно делать здесь: События (Events) в Меню / Сервис / Настройка
Посмотреть, что на событие "Открытие файла" назначен макрос Standard.Module1.Doc_open.

Какая у Вас версия LO и операционная система?

Нажимайте, пожалуйста, кнопку "Цитировать выделенное" (при необходимости).
Владимир.

vlvshein

Цитата: sokol92 от 31 августа 2022, 17:57Какая у Вас версия LO и операционная система?
Version: 7.0.3.1 (x86)
Windows 7

vlvshein

Цитата: sokol92 от 31 августа 2022, 17:57Посмотреть, что на событие "Открытие файла" назначен макрос Standard.Module1.Doc_open.
назначен doc_open и CloseDoc

vlvshein

Заработало! Разобрался. Не был назначен макрос, я документацию прочитал и понял. Спасибо огромное Вам!!!