Бывают ситуации, когда мы защищаем наши рабочие листы, чтобы пользователь не мог манипулировать рабочими листами. При защите рабочего листа мы обычно сохраняем тот же пароль. В этой статье мы покажем вам, как снять защиту с листа с помощью Кодирование VBAКодирование VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи.читать далее.
Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой Например: Источник: VBA UnProtect Sheet (wallstreetmojo.com)
Снять защиту листа на 99 % проще, чем защитить их. Нам просто нужен пароль, чтобы снять защиту листа.
Самое первое, что нам нужно сделать, это указать имя рабочего листа, который мы собираемся снять с защиты. Например, если вы хотите снять защиту с листа «Данные о продажах», ваш код VBA должен быть таким.
Рабочие листы («Данные о продажах»)
Затем получите доступ к методу «Снять защиту».
Как видно на изображении выше, мы не видим никакого списка IntelliSense, который мог бы нам помочь. Это усложняет работу, особенно новичкам.
Чтобы преодолеть это, я обычно полагаюсь на объявление переменной VBAОбъявление переменной VBAОбъявление переменной необходимо в VBA, чтобы определить переменную для определенного типа данных, чтобы она могла хранить значения; любая переменная, не определенная в VBA, не может содержать значения.читать далее как «Рабочий лист».
Код:
Sub Unpretect_Example1()
Dim Ws As Worksheet
End Sub
Теперь установите объявленную переменную на соответствующий лист.
Код:
Sub Unpretect_Example1()
Dim Ws As Worksheet
Set Ws = Worksheets("Sales Data")
End Sub
Теперь используйте переменную для доступа ко всем свойствам и методам объявленной переменной.
Как вы можете видеть на изображении выше, мы можем получить доступ ко всем свойствам и методам. Выберите метод «Снять защиту» из списка IntelliSense.
Он запрашивает пароль для снятия защиты листа. Я установил пароль «Excel@1234», поэтому я предоставлю такой же пароль.
Это снимет защиту с рабочего листа «Данные о продажах».
Код:
Sub Unpretect_Example1()
Dim Ws As Worksheet
Set Ws = Worksheets("Sales Data")
Ws.Unprotect Password:="Excel@1234"
End Sub
Если пароля нет, то нам достаточно воспользоваться методом «Снять защиту» и игнорировать параметр «Пароль».
Код:
Sub Unpretect_Example1()
Dim Ws As Worksheet
Set Ws = Worksheets("Sales Data")
'Change the worksheet name as per your requirement
Ws.Unprotect
'If there is no password just pass "UnProtect" methodEnd Sub
Если есть какой-либо пароль, то нам нужно ввести пароль в двойных кавычках. Пароль чувствителен к регистру, поэтому внимательно его запомните.
Пример № 2 — снять защиту со всех листов Excel одним щелчком мыши
Мы увидели, как снять защиту с конкретного рабочего листа. Представьте, что у вас много рабочих листов, и все рабочие листы защищены одним и тем же паролем, тогда мы не можем писать коды для каждого рабочего листа отдельно.
В этих случаях нам нужно использовать циклы, чтобы перебрать коллекцию объектов рабочего листа и легко снять с них защиту.
Приведенный ниже код будет перебирать все рабочие листы и снимать защиту с листа.
Код:
Sub Unpretect_Example2()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
Ws.Unprotect Password:="Excel@1234"
'Change the password as you have mentioned while protecting them. Next Ws
End Sub
Пример №3 – Особые ситуации
Ситуация 1: Вы когда-нибудь представляли, когда предоставленный пароль неверен. Когда предоставленный пароль неверен, мы получим 1004: Ошибка времени выполнения1004: Ошибка времени выполненияОшибка VBA 1004 — это ошибка времени выполнения в VBA, также известная как ошибка, определяемая приложением или объектом. Поскольку в Excel ограниченное количество столбцов, мы получаем ошибку 1004, когда наш код дает команду выйти за пределы допустимого диапазона.читать далее.
Чтобы обработать эти ошибки, мы можем использовать опцию «On Error GoTo Label». Приведенный ниже код является примером того же самого.
Код:
Sub Unpretect_Example3()
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
On Error GoTo Errormessage
Ws.Unprotect Password:="Excel@1234"
'Change the password as you have mentioned while protecting them.
Errormessage:
MsgBox "Wrong Password"
Next Ws
End Sub
Приведенный выше код покажет красивое окно с сообщением «Неправильный пароль».
Ситуация 2: Когда лист защищен без пароля, и если вы укажете случайный пароль, он все равно снимет защиту листа без каких-либо ошибок.
Ситуация 3: Когда лист защищен паролем, но если вы не укажете какой-либо пароль, VBA появится в качестве поля ввода пароля для ввода пароля.
В приведенном выше поле ввода нам нужно ввести наш пароль, чтобы снять защиту с рабочего листа. Если вы нажмете кнопку «Отмена», произойдет выход из подпроцедура VBAПодпроцедура VBASUB в VBA — это процедура, которая содержит весь код, который автоматически дает оператор end sub, а средняя часть используется для кодирования. Оператор Sub может быть как общедоступным, так и частным, а имя подпроцедуры является обязательным в VBA.читать далее ничего не показывая, если только нет окна сообщения пользователя.