VBA UnProtect Sheet - Bruk VBA-kode for å fjerne beskyttelsen av Excel-ark

Innholdsfortegnelse

Excel VBA Unprotect Sheet

Det er situasjoner der vi beskytter regnearkene våre for å forhindre at brukeren manipulerer regnearkene. Mens vi beskytter regnearket, opprettholder vi vanligvis det samme passordet. I denne artikkelen vil vi vise deg hvordan du kan beskytte arket ved hjelp av VBA-koding.

Eksempler

Eksempel 1

Å beskytte arket er 99% enklere enn å beskytte dem. Vi trenger bare passordet for å fjerne beskyttelsen av regnearket.

Det aller første vi trenger å gjøre er å nevne regnearknavnet vi skal beskytte. Hvis du for eksempel ønsker å fjerne beskyttelsen av arket som heter "Salgsdata", bør VBA-koden din være slik.

Regneark (“Salgsdata”)

Deretter får du tilgang til Unprotect-metoden.

Som vi kan se i bildet ovenfor, ser vi ikke noen form for IntelliSense-liste som kan hjelpe oss. Dette gjør jobben tøffere, spesielt for den nye eleven.

For å overvinne dette stoler jeg vanligvis på å erklære en VBA-variabel som "Arbeidsark".

Kode:

Sub Unpretect_Example1 () Dim Ws Som regneark End Sub

Still nå den deklarerte variabelen til det respektive arket.

Kode:

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

Bruk nå en variabel for å få tilgang til alle egenskapene og metodene til den deklarerte variabelen.

Som du kan se i bildet ovenfor, kan vi få tilgang til alle egenskapene og metodene. Velg "Unprotect" -metoden fra IntelliSense-listen.

Det spør passordet for å fjerne beskyttelsen av arket. Jeg har satt passordet som "Excel @ 1234", så jeg vil oppgi passordet som det samme.

Dette beskytter arbeidsarket med navnet "Salgsdata".

Kode:

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

Hvis det ikke er noe passord, trenger vi bare å bruke metoden “Unprotect” og ignorere “Password” -parameteren.

Kode:

Sub Unpretect_Example1 () Dim Ws som regneark Sett Ws = regneark ("Salgsdata") 'Endre regnearknavnet i henhold til dine krav Ws.Unprotect' Hvis det ikke er noe passord, bare pass "UnProtect" -metoden Slutt Sub

Hvis det er noe passord, må vi oppgi passordet med to anførselstegn. Passordet er mellom store og små bokstaver, så husk dem nøye.

Eksempel 2 - Fjern beskyttelsen av alle Excel-ark med bare et klikk

Vi har sett hvordan du kan beskytte det aktuelle regnearket. Tenk deg at du har mange regneark, og alle regnearkene er beskyttet med samme passord, så kan vi ikke fortsette å skrive koder for hvert regneark separat.

I disse tilfellene må vi bruke løkker til å løpe gjennom samlingen av regnearkobjektet og beskytte dem enkelt.

Koden nedenfor vil gå gjennom alle regnearkene og fjerne beskyttelsen av arket.

Kode:

Sub Unpretect_Example2 () Dim Ws som regneark for hver Ws i ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Endre passordet som du har nevnt mens du beskytter dem. Neste Ws End Sub

Eksempel 3 - Spesielle situasjoner

Situasjon 1: Har noen gang forestilt meg når passordet som er levert er feil. Når passordet som er levert er feil, får vi 1004: Run Time Error.

For å håndtere disse feilene kan vi bruke alternativet “On Error GoTo Label”. Koden nedenfor er et eksempel på det samme.

Kode:

Sub Unpretect_Example3 () Dim Ws som regneark for hvert Ws i ActiveWorkbook.Worksheets On Error Gå til feilmelding Ws.Unprotect Password: = "Excel @ 1234" 'Endre passordet som du har nevnt mens du beskytter dem. Feilmelding: MsgBox "Feil passord" Neste Ws End Sub

Ovennevnte kode vil vise en fin meldingsboks som sier "Feil passord."

Situasjon 2: Når arket er beskyttet uten passord, og hvis du oppgir et tilfeldig passord, vil det fortsatt beskytte regnearket uten å vise noen form for feil.

Situasjon 3: Når arket er beskyttet med et passord, men hvis du ikke oppgir noe passord, vil VBA dukke opp som en passordinntastingsboks for å angi passordet.

I inntastingsfeltet ovenfor må vi skrive inn passordet vårt for å fjerne beskyttelsen av regnearket. Hvis du klikker på Avbryt-knappen, vil den avslutte VBA-underprosedyren uten å vise noe med mindre det er noen brukermeldingsboks.

Interessante artikler...