Снятие защиты с групп рабочих листов (Microsoft Excel)
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 [Снятие защиты групп рабочих листов]
.