Excel позволяет защищать и снимать защиту с листов. Цель, конечно, состоит в том, чтобы позволить другим использовать вашу книгу, но не изменять определенные ячейки на каждом листе.

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

Менее затратный по времени метод защиты каждого рабочего листа в книге — это использование макроса для выполнения фактической работы. Следующий макрос сделает свое дело:

Sub ProtectAllSheets()

Dim ws As Worksheet     Dim sOrigSheet As String     Dim sOrigCell As String

Application.ScreenUpdating = False     sOrigSheet = ActiveSheet.Name     sOrigCell = ActiveCell.Address

For Each ws In Worksheets         ws.Select         ws.Protect Password:="Password"

Next ws

Application.GoTo Reference:=Worksheets("" _       & sOrigSheet & "").Range("" & sOrigCell & "")

Application.ScreenUpdating = True End Sub

Макрос для снятия защиты со всех листов немного отличается:

Sub UnProtectAllSheets()

Dim ws As Worksheet     Dim sOrigSheet As String     Dim sOrigCell As String

Application.ScreenUpdating = False     sOrigSheet = ActiveSheet.Name     sOrigCell = ActiveCell.Address

For Each ws In Worksheets         ws.Select         ws.Unprotect Password:="Password"

Next ws

Application.GoTo Reference:=Worksheets("" _       & sOrigSheet & "").Range("" & sOrigCell & "")

Application.ScreenUpdating = True End Sub

Хотя эти макросы будут работать нормально, есть несколько предостережений.

Во-первых, вам нужно убедиться, что для переменной Password в каждом макросе задан правильный пароль для ваших листов. (Это, конечно, предполагает, что все рабочие листы используют один и тот же пароли.)

Второе предостережение заключается в том, что, поскольку макрос должен включать пароль, общая безопасность вашей книги может быть поставлена ​​под угрозу — любой, кто может отображать макросы, будет знать, каковы пароли для ваших книг.

В качестве решения этой последней проблемы вы можете изменить макросы, чтобы они запрашивали пароль для использования в своей работе. Следующая версия макроса, который защищает рабочие листы:

Sub ProtectAllSheetsPass()

Dim ws As Worksheet     Dim sOrigSheet As String     Dim sOrigCell As String     Dim sPWord As String

Application.ScreenUpdating = False     sOrigSheet = ActiveSheet.Name     sOrigCell = ActiveCell.Address

sPWord = InputBox("What password?", "Protect All")

If sPWord > "" Then         For Each ws In Worksheets             ws.Select             ws.Protect Password:=sPWord         Next ws     End If     Application.GoTo Reference:=Worksheets("" _       & sOrigSheet & "").Range("" & sOrigCell & "")

Application.ScreenUpdating = True End Sub

Макрос отображает поле ввода с запросом пароля. Затем один и тот же пароль используется для защиты каждого листа в книге. Такое же изменение можно сделать и с макросом, который снимает защиту со всех листов.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13075) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Unprotecting_Groups_of_Worksheets [Снятие защиты групп рабочих листов].