Excel umożliwia ochronę skoroszytów programu Excel przed zmianami. Ten samouczek pokaże Ci, jak chronić lub usuwać ochronę struktury skoroszytu za pomocą VBA.
Ochrona skoroszytu VBA
VBA Workbook Protection umożliwia zablokowanie struktury skoroszytu. Gdy skoroszyt jest chroniony, użytkownicy nie będą mogli dodawać, usuwać, ukrywać / odkrywać ani chronić / wyłączać ochrony arkuszy. Jeśli budujesz model, prawdopodobnie chcesz włączyć ochronę skoroszytu, aby uniemożliwić użytkownikom (lub Tobie!) przypadkowe usunięcie arkuszy.
Usuń ochronę skoroszytu VBA
Aby usunąć ochronę skoroszytu, po prostu użyj następującego wiersza kodu:
1 | Skoroszyty("Książka1").Unprotect |
Uwaga: ten kod będzie działał tylko wtedy, gdy skoroszyt był chroniony z pominięciem hasło. Jeśli był chroniony hasłem, musisz również wpisać hasło, aby go odbezpieczyć:
Odblokuj skoroszyt hasłem
Ten wiersz kodu spowoduje usunięcie ochrony skoroszytu, który był chroniony hasłem:
1 | Skoroszyty("Książka1").Unprotect Password:="hasło" |
lub możesz pominąć Hasło:=
1 | Skoroszyty("Książka1").Odbezpiecz "hasło" |
Odblokuj ten skoroszyt
Ten kod wyłączy ochronę ThisWorkbook (ThisWorkbook to skoroszyt, w którym przechowywany jest działający kod. Nigdy się nie zmieni).
1 | ThisWorkbook.Unprotect |
lub usuń zabezpieczenie ThisWorkbook hasłem:
1 | ThisWorkbook.Unprotect „hasło” |
Odblokuj ActiveWorkbook
Ten kod nie chroni ActiveWorbook.
1 | ActiveWorkbook.Unprotect |
lub odbezpiecz ActiveWorkbook hasłem:
1 | ActiveWorkbook.Odbezpiecz „hasło” |
Odblokuj wszystkie otwarte skoroszyty
Ten kod wyłączy ochronę wszystkich otwartych skoroszytów:
12345678 | Sub UnprotectAllOpenWorkbooks()Dim wb jako skoroszytDla każdego wb w skoroszytachwb.UnprotectNastępny wbNapis końcowy |
Odblokuj skoroszyt - bez znajomości hasła
Jeśli chcesz usunąć ochronę skoroszytu bez znajomości hasła, możesz skorzystać z kilku dodatków. Polecam wstążkę Commander.
Odblokuj wszystkie arkusze w skoroszycie
Po wyłączeniu ochrony skoroszytu możesz również chcieć usunąć ochronę wszystkich arkuszy w skoroszycie. Oto procedura, która wyłączy ochronę wszystkich arkuszy:
12345678 | Sub UnProtectWorkbookAndAllSheets()Dim ws As WorksheetActiveWorkbook.UnprotectDla każdego ws w arkuszach roboczychws.UnprotectNastępnyNapis końcowy |
Chroń skoroszyt
Struktury skoroszytu można chronić w taki sam sposób, jak wyłącza się ochronę.
Chroń skoroszyt bez hasła
Ten wiersz kodu ochroni skoroszyt (bez hasła)
1 | Skoroszyty("Książka1").Chroń |
Uwaga: często stosuję ochronę skoroszytu bez haseł, aby zapobiec przypadkowy zmiany w skoroszytach.
Chroń skoroszyt hasłem
Ten kod będzie chronić strukturę skoroszytu (za pomocą hasła)
1 | Skoroszyty("Książka1").Chroń "hasło" |
lub:
1 | Skoroszyty("Książka1").Chroń hasło:="hasło" |
Ochrona hasłem pliku Excel
Zamiast ochrony skoroszytu możesz chcieć zabezpieczyć hasłem cały plik programu Excel. Aby to zrobić za pomocą VBA, Zapisz jako skoroszyt z hasłem:
1 | Skoroszyty("Książka1").SaveAs "hasło" |
Chroń / Odblokuj Przykłady skoroszytów
Odkryj wszystkie arkusze robocze w chronionym skoroszycie
Ta procedura usunie ochronę skoroszytu, ukryje wszystkie arkusze i ponownie zabezpieczy skoroszyt
12345678910 | Sub UnprotectWB_Unhide_All_Sheets()Dim ws As WorksheetActiveWorkbook.UnprotectDla każdego ws w arkuszach roboczychws.Visible = xlSheetVisibleNastępnyActiveWorkbook.ProtectNapis końcowy |
Chroń skoroszyt i wszystkie arkusze
Ta procedura chroni wszystkie arkusze w skoroszycie, a następnie chroni skoroszyt:
1234567891011 | Sub ProtectWB_Protect_All_Sheets()Dim ws As WorksheetActiveWorkbook.UnprotectDla każdego ws w arkuszach roboczychws.ProtectNastępnyActiveWorkbook.ProtectNapis końcowy |
Możesz również dodać ochronę hasłem:
1234567891011 | Sub ProtectWB_Protect_All_Sheets_Pswrd()Dim ws As WorksheetActiveWorkbook.Odbezpiecz „hasło”Dla każdego ws w arkuszach roboczychws.Protect „hasło”NastępnyActiveWorkbook.Protect „hasło”Napis końcowy |