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

Главная категория => Макросы => Тема начата: ost от 11 марта 2021, 08:41

Название: LibreOffice Basic. Редактирование защищенного листа Calc только из макроса.
Отправлено: ost от 11 марта 2021, 08:41
Доброго.
Есть ли возможность разрешить редактирование защищенных ячеек на защищенном листе Calc из макроса? При этом чтобы попытка изменения защищенных ячеек на таком листе из интерфейса пользователя блокировалась.
Спасибо.

Название: Re: LibreOffice Basic. Редактирование защищенного листа Calc только из макроса.
Отправлено: eeigor от 11 марта 2021, 10:17
В Excel можно. Здесь метод protect идет без параметров. Нельзя.
Но что мешает добавить в коде 2 строки:
до начала вашего редактирования снять защиту, а после внесения изменений, установить обратно? С паролем или без, неважно... Это сложно?
В примере ниже защита стоит без пароля, и пользователь может даже снять защиту и забыть поставить обратно (переменная bWasProtected).

    oSheet = ThisComponent.CurrentController.ActiveSheet
   With oSheet
       bWasProtected = .isProtected()
       If .isProtected() Then .unprotect("")  'no password (!)
            <...>  'ваш код
       If bWasProtected Then .protect("")
   End With
Название: Re: LibreOffice Basic. Редактирование защищенного листа Calc только из макроса.
Отправлено: ost от 11 марта 2021, 13:31
Понятно. Спасибо.