Excel позволяет защищать и снимать защиту с листов. Цель, конечно же, состоит в том, чтобы позволить другим использовать вашу книгу, но не изменять определенные ячейки на каждом листе.
Поскольку защита осуществляется на уровне рабочего листа, это может быть большой проблемой через каждый лист в книге и либо защитите, либо снимите защиту. Если у вас 25 листов, вы должны активировать каждый лист, выполнить защиту или снять защиту и перейти к следующему.
Менее трудоемкий метод защиты каждого листа в книге – это используйте макрос для выполнения фактической работы. Следующий макрос сделает свое дело:
Sub ProtectAllSheets () Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As String Dim J As Integer Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell .Address для каждого ws в рабочих таблицах ws.Select ws.Protect Password: = «Password» Следующее приложение ws.GoTo Ссылка: = Worksheets («» _ & sOrigSheet & «») .Range («» & sOrigCell & «») Приложение .ScreenUpdating = TrueEnd Sub
Макрос для снятия защиты со всех листов немного отличается:
Sub UnProtectAllSheets () Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As Строка Dim J как целое число Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell.Address для каждого ws на листах ws.Select ws.Unprotect Password: = «Password» Далее ws Application.GoTo Ссылка: = Worksheets («» _ & sOrigSheet & «») .Range («» & sOrigCell & «») Application.ScreenUpdating = TrueEnd Sub
Пока эти m acros будет работать нормально, есть пара предостережений. Во-первых, вам необходимо убедиться, что для переменной Password в каждом макросе задан правильный пароль для ваших листов. (Это, конечно, предполагает, что все рабочие листы используют одни и те же пароли.) Второе предостережение заключается в том, что, поскольку макрос должен включать пароль, общая безопасность вашей книги может быть скомпрометирована – любой, кто может отображать макросы, будет знать, что пароли предназначены для ваших книг.
В качестве решения этой последней проблемы вы можете изменить макросы, чтобы они запрашивали пароль для использования в своей работе. Следующая версия макроса, который защищает рабочие листы:
Sub ProtectAllSheetsPass () Dim ws As Worksheet Dim sOrigSheet As String Dim sOrigCell As String Dim J As Integer Dim sPWord As String Application.ScreenUpdating = False sOrigSheet = ActiveSheet.Name sOrigCell = ActiveCell.Address sPWord = InputBox («Какой пароль?», «Защитить все») Если sPWord> «», то для каждого ws в листах ws.Select ws.Protect Password: = sPWord Next ws End Если Application.GoTo Reference: = Worksheets («» _ & sOrigSheet & «») .Range («» & sOrigCell & «») Приложение. ScreenUpdating = TrueEnd Sub
Макрос отображает поле ввода с запросом пароля. Затем один и тот же пароль используется для защиты каждого листа в книге. То же самое можно сделать и с макросом, который снимает защиту со всех листов.
Источник: