Denne opplæringen lærer deg alt om beskyttelse av Excel -regneark i VBA - Slik beskytter eller fjerner du beskyttelsesark i Excel.
Fjern beskyttelsen til Excel -regneark uten passord
For å fjerne beskyttelsen av et regneark som ikke er passordbeskyttet, bruk denne enkle kodelinjen:
1 | Regneark ("Ark1"). Fjern beskyttelsen |
Fjern beskyttelsen til Excel -regneark med passord
For å fjerne beskyttelsen av et regneark som er passordbeskyttet, må du også skrive inn passordet:
1 | Regneark ("Ark1"). Fjern beskyttelsen av "Passord" |
Fjern beskyttelsesarket - mistet passord
For å fjerne beskyttelsen av et regneark uten å vite passordet, må du bruke et tillegg for gjenoppretting av passord.
Beskytt regneark
Arbeidsarkbeskyttelse lar deg låse visse aspekter av arket fra redigering.
Denne menyen finnes i Hjem> Format> Beskytt ark eller ved å høyreklikke på arkfanenavnet:
Vanligvis brukes dette for å beskytte "Låste" celler mot redigering, slik at sluttbrukeren bare kan redigere visse celler.
Du kan låse celler ved å velge dem og åpne Kategorien Beskyttelse av Celleformateringsmeny (CTRL + 1).
Du kan også hindre brukeren i å endre regnearkstrukturen (sette inn, slette eller endre størrelse på rader og kolonner), eller fra å samhandle med autofilter, og mye mer.
Beskytt regneark - uten passord
Du vil kanskje beskytte et regneark uten å angi et passord. Dette forhindrer utilsiktede endringer i regnearket, samtidig som brukeren får tilgang til å gjøre endringer hvis det er ønskelig.
1 | Regneark ("Ark1"). Beskytt |
Beskytt regneark - Passordbeskytt
1 | Regneark ("Ark1"). Beskytt "Passord" |
Beskytt regnearkinnstillinger
Eksemplene ovenfor vil beskytte regneark med standard beskyttelsesinnstillinger. I stedet vil du kanskje tilpasse det som er beskyttet:
12345 | Regneark ("Sheet1"). Beskytt passord: = strPassword, DrawingObjects: = True, Contents: = True, Scenarier: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False |
I stedet for å bruke syntaksen ovenfor, anbefaler jeg å spille inn en makro med de ønskede innstillingene (valgt med menyen for regnearkbeskyttelse ovenfor) og kopiere + lime inn den innspilte koden i prosedyren.
Beskytt ark - la VBA gjøre endringer
Som standard, når du beskytter et ark, gjelder beskyttelsen for VBA -operasjoner i tillegg til brukerhandlinger. Hvis VBA prøver å endre en låst celle, vil du se en kjøretidsfeil 1004. For å unngå dette kan du fjerne beskyttelsen og beskytte beskyttelsesarkene dine når VBA trenger å samhandle med dem:
123456789 | Sub Edit_Sheet1 ()'Beskytt ark 1Regneark ("Ark1"). Fjern beskyttelsen'Gjør noe mot ark 1'Beskytt ark 1Regneark ("Ark1"). BeskyttSlutt Sub |
Imidlertid er det lett å glemme å fjerne beskyttelsen og/eller ombeskytte regnearkene dine. Dette kan øke sannsynligheten for en kodingsfeil.
I stedet kan du bruke UserInterFaceOnly -innstillingen. Når det er SANT, vil regneark KUN være beskyttet mot brukere, IKKE mot VBA.VBA -koden din kan redigere regnearket akkurat som om den var låst opp.
To viktige punkter om UserInterFaceOnly:
- Denne innstillingen er ikke tilgjengelig fra arbeidsarkbeskyttelsesmenyen (vist ovenfor). Det er en innstilling som må defineres i VBA.
- Innstillingen lagres ikke når du lukker en arbeidsbok. Det må defineres på nytt hver gang en arbeidsbok åpnes.
Så for å angi UserInterFaceOnly -egenskapen, bør du plassere følgende Workbook_Open -hendelsesprosedyre i ThisWorkbook -modulen:
1234567 | Private Sub Workbook_Open ()Dim ws Som regnearkFor hver gang i ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = TrueNeste wsSlutt Sub |
Workbook_Open er en spesiell hendelsesprosedyre som kjøres hver gang arbeidsboken er åpen. Den må plasseres i ThisWorkbook -modulen. Alternativt kan du bruke Auto_Open -hendelsesprosedyren (dekkes ikke her).
Fjern beskyttelsen av alle arkene Makro
Denne makroen vil fjerne beskyttelsen av alle ark i en arbeidsbok:
123456789 | 'Fjern beskyttelsen av alle regnearkSub UnProtectAllSheets ()Dim ws Som regnearkFor hver uke i regnearkws.Unbeskytt "passord"Neste wsSlutt Sub |
Beskytt alle ark Makro
Denne makroen vil beskytte alle ark i en arbeidsbok:
123456789 | 'Beskytt alle regnearkSub ProtectAllSheets ()Dim ws Som regnearkFor hver uke i regnearkws.Protect "passord"Neste wsSlutt Sub |