VBA UnProtect Sheet

Excel VBA Unprotect Sheet

Det finns situationer där vi skyddar våra kalkylblad för att förhindra att användaren manipulerar kalkylbladet. Samtidigt som vi skyddar kalkylbladet behåller vi vanligtvis samma lösenord. I den här artikeln kommer vi att visa dig hur du avskyddar arket med hjälp av VBA-kodning.

Exempel

Du kan ladda ner denna VBA Unprotect Sheet Excel-mall här - VBA Unprotect Sheet Excel-mall

Exempel nr 1

Att skydda arket är 99% enklare än att skydda dem, vi behöver bara lösenordet för att avskydda kalkylbladet.

Det allra första vi behöver göra är att nämna kalkylbladets namn som vi kommer att skydda. Om du till exempel vill skydda arket som heter "Försäljningsdata" ska din VBA-kod vara så här.

Kalkylblad ("Försäljningsdata")

Gå sedan till Unprotect-metoden.

Som vi kan se i bilden ovan ser vi ingen typ av IntelliSense-lista som hjälper oss. Detta gör jobbet hårdare, särskilt för den nya eleven.

För att övervinna detta förlitar jag mig vanligtvis på att förklara en VBA-variabel som "Arbetsblad".

Koda:

 Under Unpretect_Example1 () Dim Ws som kalkylblad Slut sub 

Ställ nu in den deklarerade variabeln till respektive ark.

Koda:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") End Sub 

Använd nu en variabel för att få tillgång till alla egenskaper och metoder för den deklarerade variabeln.

Som du kan se i bilden ovan kan vi komma åt alla egenskaper och metoder. Välj "Unprotect" -metoden från IntelliSense-listan.

Det ber lösenordet för att avskydda bladet. Jag har ställt in lösenordet som “Excel @ 1234” så jag kommer att tillhandahålla lösenordet som detsamma.

Detta skyddar kalkylbladet som heter "Försäljningsdata".

Koda:

 Sub Unpretect_Example1 () Dim Ws Som kalkyluppsättning Ws = Kalkylblad ("Försäljningsdata") Ws.Unprotect Password: = "Excel @ 1234" Avsluta sub 

Om det inte finns något lösenord behöver vi bara använda metoden "Avskydda" och ignorera parametern "Lösenord".

Koda:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Ändra kalkylbladets namn enligt dina krav Ws.Unprotect' Om det inte finns något lösenord passerar du bara "UnProtect" -metoden Avsluta Sub 

Om det finns något lösenord måste vi ange lösenordet i dubbla citat. Lösenord är skiftlägeskänsligt så kom ihåg dem noga.

Exempel # 2 - Avskydda alla Excel-ark med bara ett klick

Vi har sett hur man skyddar det specifika kalkylbladet. Tänk dig att du har många kalkylblad och alla kalkylblad är skyddade med samma lösenord, då kan vi inte fortsätta skriva koder för varje kalkylblad separat.

I dessa fall måste vi använda öglor för att gå igenom samlingen av kalkylobjekt och avskydda dem med lätthet.

Nedanstående kod kommer att slinga igenom alla kalkylblad och avskydda arket.

Koda:

Sub Unpretect_Example2 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Ändra lösenordet som du har nämnt medan du skyddar dem. Nästa Ws End Sub

Exempel # 3 - Särskilda situationer

Situation 1: Har någonsin föreställt mig när det medföljande lösenordet är fel. När det angivna lösenordet är fel får vi 1004: Run Time Error.

För att hantera dessa fel kan vi använda alternativet “On Error GoTo Label”. Nedanstående kod är exemplet på detsamma.

Koda:

Sub Unpretect_Example3 () Dim Ws som kalkylblad för varje Ws i ActiveWorkbook.Worksheets On Error Gå till felmeddelande Ws.Unprotect Password: = "Excel @ 1234" 'Ändra lösenordet som du har nämnt medan du skyddar dem. Felmeddelande: MsgBox "Fel lösenord" Nästa Ws End Sub

Ovanstående kod visar en trevlig meddelandefält som säger "Fel lösenord".

Situation 2: När arket skyddas utan ett lösenord och om du anger ett slumpmässigt lösenord kommer det fortfarande att avskydda kalkylbladet utan att det visas några fel.

Situation 3: När arket skyddas av ett lösenord men om du inte anger något lösenord dyker VBA upp som en inmatningsruta för lösenord för att ange lösenordet.

I inmatningsrutan ovan måste vi ange vårt lösenord för att avskydda kalkylbladet. Om du klickar på knappen Avbryt kommer den att avsluta VBA-delproceduren utan att visa något om inte det finns någon användarmeddelande.