Как защитить все листы в книге Excel одним щелчком мыши? - PullRequest
7 голосов
/ 10 октября 2008

В моей книге около 25 листов (таблица Excel). Есть ли способ защитить все 25 листов одним щелчком мыши? или эта функция недоступна, и мне придется написать код VBA для этого. Мне очень часто нужно защищать все листы и снимать защиту со всех листов, а выполнение индивидуально занимает много времени

Ответы [ 4 ]

14 голосов
/ 10 октября 2008

Я не верю, что есть способ сделать это без использования VBA. Если вы заинтересованы в решении VBA, вот код:

Dim ws as Worksheet
Dim pwd as String

pwd = "" ' Put your password here
For Each ws In Worksheets
    ws.Protect Password:=pwd
Next ws

Снятие защиты практически одинаково:

Dim ws as Worksheet
Dim pwd as String

pwd = "" ' Put your password here
For Each ws In Worksheets
    ws.Unprotect Password:=pwd
Next ws
3 голосов
/ 10 декабря 2015

Вы можете защитить все рабочие листы от пользовательских изменений, но при этом позволить сценариям VBA вносить изменения с помощью параметра «UserInterfaceOnly». Этот обходной путь позволяет запускать любой сценарий VBA на рабочих листах без необходимости каждый раз защищать и снимать защиту:

Dim ws as Worksheet
Dim pwd as String

pwd = "" ' Put your password here
or Each ws In Worksheets
   ws.Protect Password:=pwd, UserInterfaceOnly:=True
Next ws

Снятие защиты - то же самое, что решение, предложенное Беном Хоффштейном:

Dim ws as Worksheet
Dim pwd as String

pwd = "" ' Put your password here
For Each ws In Worksheets
    ws.Unprotect Password:=pwd
Next ws

Вы можете получить доступ к этому макросу с помощью кнопки / ярлыка. В Excel 2010 вы щелкаете правой кнопкой мыши на панели быстрого доступа и выбираете «Настроить панель быстрого доступа». В раскрывающемся меню для выбора команд выберите «Макросы». Затем щелкните сценарий VBA, который вы создали для защиты (или снятия защиты). Наконец, нажмите кнопку «Добавить>>», а затем «ОК», чтобы сохранить ее.

3 голосов
/ 10 октября 2008

Не думайте, что для этого есть кнопка, но достаточно простой код:

Для каждого proTSheet в рабочих листах protSheet.Protect Password: = "boo" Следующий протокол

1 голос
/ 30 декабря 2008

Вы можете защитить книгу, а не каждый лист, и это остановит изменения, внесенные во всю книгу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...