VBA UnProtect Sheet

Arkusz niezabezpieczenia programu Excel VBA

Istnieją sytuacje, w których chronimy nasze arkusze robocze, aby uniemożliwić użytkownikowi manipulowanie arkuszami. Chroniąc arkusz roboczy, zwykle utrzymujemy to samo hasło. W tym artykule pokażemy, jak wyłączyć ochronę arkusza za pomocą kodowania VBA.

Przykłady

Możesz pobrać ten szablon VBA Unprotect Sheet Excel tutaj - VBA Unprotect Sheet Excel Template

Przykład 1

Usunięcie ochrony arkusza jest o 99% prostsze niż ochrona arkusza, potrzebujemy tylko hasła, aby wyłączyć ochronę arkusza.

Pierwszą rzeczą, którą musimy zrobić, jest wspomnienie nazwy arkusza roboczego, którą zamierzamy wyłączyć ochronę. Na przykład, jeśli chcesz wyłączyć ochronę arkusza o nazwie „Dane sprzedaży”, kod VBA powinien wyglądać tak.

Arkusze („Dane sprzedaży”)

Następnie uzyskaj dostęp do metody Unprotect.

Jak widać na powyższym obrazku, nie widzimy żadnej listy IntelliSense, która mogłaby nam pomóc. To sprawia, że ​​praca jest trudniejsza, szczególnie dla nowego ucznia.

Aby temu zaradzić, zwykle polegam na deklarowaniu zmiennej VBA jako „Arkusz roboczy”.

Kod:

 Sub Unpretect_Example1 () Dim Ws As Worksheet End Sub 

Teraz ustaw zadeklarowaną zmienną na odpowiedni arkusz.

Kod:

 Sub Unpretect_Example1 () Dim Ws As Zestaw arkuszy Ws = Arkusze robocze ("Dane sprzedaży") End Sub 

Teraz użyj zmiennej, aby uzyskać dostęp do wszystkich właściwości i metod zadeklarowanej zmiennej.

Jak widać na powyższym obrazku, mamy dostęp do wszystkich właściwości i metod. Wybierz metodę „Unprotect” z listy IntelliSense.

Prosi o hasło, aby wyłączyć ochronę arkusza. Ustawiłem hasło jako „Excel @ 1234”, więc podaję to samo.

Spowoduje to wyłączenie ochrony arkusza o nazwie „Dane sprzedaży”.

Kod:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") Ws.Unprotect Password: = "Excel @ 1234" End Sub 

Jeśli nie ma hasła, wystarczy użyć metody „Unprotect” i zignorować parametr „Password”.

Kod:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Zmień nazwę arkusza zgodnie z wymaganiami Ws.Unprotect' Jeśli nie ma hasła, po prostu przekaż metodę "UnProtect" End Sub 

Jeśli jest jakieś hasło, musimy je wpisać w cudzysłowach. W haśle rozróżniana jest wielkość liter, więc pamiętaj o nich uważnie.

Przykład # 2 - Usuń ochronę wszystkich arkuszy Excela jednym kliknięciem

Widzieliśmy, jak wyłączyć ochronę danego arkusza. Wyobraź sobie, że masz wiele arkuszy roboczych, a wszystkie arkusze są chronione tym samym hasłem, wtedy nie możemy dalej pisać kodów dla każdego arkusza osobno.

W takich przypadkach musimy użyć pętli, aby zapętlić kolekcję obiektów arkusza i z łatwością je wyłączyć.

Poniższy kod przejdzie przez wszystkie arkusze i wyłączy ich ochronę.

Kod:

Sub Unpretect_Example2 () Dim Ws As Worksheet For each Ws In ActiveWorkbook.Worksheets Ws.Unprotect Hasło: = "Excel @ 1234" 'Zmień hasło, jak wspomniałeś, chroniąc je. Następny Ws End Sub

Przykład 3 - sytuacje specjalne

Sytuacja 1: Czy kiedykolwiek wyobrażałem sobie, że podane hasło jest nieprawidłowe. Jeśli podane hasło jest nieprawidłowe, otrzymamy komunikat 1004: Run Time Error.

Aby poradzić sobie z tymi błędami, możemy skorzystać z opcji „On Error GoTo Label”. Poniższy kod jest przykładem tego samego.

Kod:

Sub Unpretect_Example3 () Dim Ws As Worksheet For each Ws in ActiveWorkbook.Worksheets On Error GoTo Errormessage Ws.Unprotect Hasło: = "Excel @ 1234" 'Zmień hasło, jak wspomniałeś, chroniąc je. Errormessage: MsgBox "Złe hasło" Next Ws End Sub

Powyższy kod pokaże ładne okienko z komunikatem „Złe hasło”.

Sytuacja 2: Gdy arkusz jest chroniony bez hasła i jeśli podasz losowe hasło, nadal nie będzie on chronił arkusza bez wyświetlania jakichkolwiek błędów.

Sytuacja 3: Gdy arkusz jest chroniony hasłem, ale jeśli nie podasz żadnego hasła, VBA pojawi się jako pole wprowadzania hasła, aby wprowadzić hasło.

W powyższym polu wejściowym musimy wprowadzić nasze hasło, aby wyłączyć ochronę arkusza. Kliknięcie przycisku Anuluj spowoduje wyjście z podprocedury VBA bez wyświetlania niczego, chyba że pojawi się okno komunikatu użytkownika.