Защита структуры листа

Автор Fiona, 1 июня 2020, 08:28

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

Fiona

Доброго времени суток!
Подскажите, пожалуйста, каким образом  (по аналогии с MSO) через макрос можно защитить структуру листа в LO?
Исходник был такой:
    ActiveSheet.Protect PASSWORD:="password", AllowInsertingRows:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True _
       , AllowFormattingCells:=False, AllowFormattingColumns:=True, _
         AllowFormattingRows:=True, AllowInsertingColumns:=False, AllowInsertingRows _
       :=False, AllowSorting:=False, AllowFiltering:=True, AllowUsingPivotTables _
       :=False
Может быть есть литература на эту тему?

bk

Самое первое, что нашлось средствами xray: Лист.protect("пароль"), .unprotect снимает защиту.
Здесь посмотрите, что пишут:
https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Protecting_Spreadsheets

Fiona

Спасибо, но здесь только включить и выключить - ничего о дополнительных свойствах или параметрах защиты... :-\

mikekaganski

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

Fiona

Михаил, спасибо. Я верно поняла? это  VBA? у меня как раз желание переписать код для LO. 120 листов в книге - то, что нужно, уже залочено. Но задача загрузить в шаблон сверху данные из файлов пользователей. И еще есть функция добавления строки без снятия защиты листа.
kompilainenn написал, что надо переписывать макросы, иначе работать не будет. Но если API только в VBA, тогда есть ли в этом вообще смысл?

mikekaganski

Цитата: Fiona от  1 июня 2020, 12:22Я верно поняла? это  VBA?

Не понял, Вы про что? В топике описан вопрос, а затем реализация решения средствами ЛО. На втором листе обсуждения описано, как оно работает в нынешних версиях ЛО. Из VBA там был, по-моему, только ответ #2 от economist - но он также не относился к установке деталей защиты.
С уважением,
Михаил Каганский

Fiona

Тогда я чего-то не поняла... Речь об этой реализации?
       CellProtection = oSheet.getCellRangeByName("A1:B2").CellProtection
   CellProtection.IsLocked = false
   oSheet.getCellRangeByName("A1:B2").CellProtection = CellProtection
Это же определенная область. Даже чисто гипотетически ее невозможно определить. Весь лист по умолчанию? Реально так работает, как написано? То, что было защищено, то и останется? а как тогда новую строку добавить с защищенными и незащищенными ячейками?

mikekaganski

Речь о чтении всего текста, а не только предложенных кусков кода.

В ЛО нет возможности задать настройки защиты листа из макроса. Но с версии 5.3 реализована возможность сохранять заданные вручную настройки. То есть возможно только вручную задать защиту с настройками в диалоге, а затем в макросе при необходимости отключать на время защиту, работать с листом и затем включать её снова - с сохранением настроек.
С уважением,
Михаил Каганский

Fiona

Теперь дошло... Спасибо большое