Защита листа Calc

Автор Kadet, 24 сентября 2019, 22:57

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

Kadet

Задача: заблокировать лист calc от всяких изменений, причём сделать это нужно макросом.
Нашёл два способа: EditDoc (сделать документ только для чтения) и Protect (установить защиту листа от изменений).
Так как документ calc является встроенным объектом, то EditDoc не работает. Документ продолжает редактироваться.
В общем, остановился на втором способе:
Sub BlockDocOn()
Dim document   as object
Dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Protect"
args1(0).Value = True

dispatcher.executeDispatch(document, ".uno:Protect", "", 0, args1())

End Sub


Всё работает как задумано, но есть одно неудобство. При включении защиты выскакивает диалоговое окно с запросом пароля защиты. Пароль не нужен, поэтому это окно вообще лишнее. Однако этот запрос встроен в LO и никак я не найду способа обойти этот запрос.
Нужно либо вообще отключить этот запрос, чего никак не могу найти как сделать. Либо симулировать нажатие кнопки мыши на кнопке "ОК" этого диалогового окна, чего тоже никак не могу изобразить. Это диалоговое окно даже поймать не получается, а пока оно открыто все макросы останавливаются.

Может кто подбросит идею как выключить этот запрос?

mikekaganski

С уважением,
Михаил Каганский

Kadet

mikekaganski огромное спасибо.
Теперь работает как надо.
Оказалось до глупости просто.