Denne vejledning lærer dig alt om beskyttelse af Excel -regneark i VBA - Sådan beskyttes eller fjernes beskyttelsesark i Excel.
Fjern beskyttelse af Excel -regneark uden adgangskode
For at afbeskytte et regneark, der ikke er beskyttet med en adgangskode, skal du bruge denne enkle kodelinje:
1 | Regneark ("Ark1"). Beskyt ikke |
Fjern beskyttelsen af Excel -regneark med adgangskode
For at afbeskytte et regneark, der er beskyttet med adgangskode, skal du også indtaste adgangskoden:
1 | Regneark ("Sheet1"). Fjern beskyttelsen af "Password" |
Afbeskyt ark - tabt adgangskode
Hvis du vil afbeskytte et regneark uden at kende adgangskoden, skal du bruge et tilføjelsesprogram til gendannelse af adgangskode.
Beskyt regneark
Arbejdsarkbeskyttelse giver dig mulighed for at låse visse aspekter af arket fra redigering.
Denne menu findes i Hjem> Format> Beskyt ark eller ved at højreklikke på fanebladets arknavn:
Normalt bruges dette til at beskytte "låste" celler mod redigering, hvilket kun tillader slutbrugeren at redigere bestemte celler.
Du kan låse celler ved at markere dem og åbne Fanen Beskyttelse af Celleformateringsmenu (CTRL + 1).
Du kan også forhindre brugeren i at ændre regnearksstrukturen (indsætte, slette eller ændre størrelse på rækker og kolonner) eller interagere med autofilter og meget mere.
Beskyt regneark - uden adgangskode
Du vil måske beskytte et regneark uden at indtaste en adgangskode. Dette forhindrer utilsigtede ændringer af regnearket, samtidig med at brugeren får adgang til at foretage ændringer, hvis det ønskes.
1 | Arbejdsark ("Ark1"). Beskyt |
Beskyt regneark - Beskyt adgangskode
1 | Regneark ("Ark1"). Beskyt "Adgangskode" |
Beskyt regnearksindstillinger
Ovenstående eksempler beskytter regneark med standardbeskyttelsesindstillingerne. I stedet vil du måske tilpasse det, der er beskyttet:
12345 | Regneark ("Sheet1"). Beskyt adgangskode: = strPassword, DrawingObjects: = True, Indhold: = True, Scenarier: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = Falsk, AllowInsertingColumns: = Falsk, AllowInsertingRows: = Falsk, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = Falsk, AllowFiltering: = Falsk, AllowUsingPivotTables: = Falsk |
I stedet for at bruge syntaksen ovenfor anbefaler jeg at optage en makro med dine ønskede indstillinger (valgt med menuen Beskyttelse af regneark ovenfor) og kopiere + indsætte den indspillede kode i din procedure.
Beskyt ark - Tillad VBA at foretage ændringer
Som standard, når du beskytter et ark, gælder beskyttelsen for VBA -operationer ud over brugerhandlinger. Hvis VBA forsøger at ændre en låst celle, vil du se en runtime-fejl 1004. For at undgå dette kan du afbeskytte og genbeskytte dine regneark, når VBA skal interagere med dem:
123456789 | Sub Edit_Sheet1 ()'Beskyttelsesark 1Regneark ("Ark1"). Beskyt ikke'Gør noget til ark 1'Beskyt ark 1Arbejdsark ("Ark1"). BeskytAfslut Sub |
Det er dog let at glemme at afbeskytte og/eller genbeskytte dine regneark. Dette kan øge sandsynligheden for en kodningsfejl.
I stedet kan du bruge indstillingen UserInterFaceOnly. Når det er SAND, er regneark KUN beskyttet mod brugere, IKKE mod VBA.Din VBA -kode vil være fri til at redigere regnearket, ligesom hvis det var låst op.
To vigtige punkter om UserInterFaceOnly:
- Denne indstilling er ikke tilgængelig fra menuen Beskyttelse af regneark (vist ovenfor). Det er en indstilling, der skal defineres i VBA.
- Indstillingen gemmes ikke, når du lukker en projektmappe. Det skal defineres igen, hver gang en projektmappe åbnes.
Så for at indstille egenskaben UserInterFaceOnly skal du placere følgende procedure for Workbook_Open -hændelse i ThisWorkbook -modulet:
1234567 | Private Sub Workbook_Open ()Dim ws Som regnearkFor hver gang i ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = TrueNæste wsAfslut Sub |
Workbook_Open er en særlig hændelsesprocedure, der kører hver gang projektmappen er åben. Det skal placeres i ThisWorkbook -modulet. Alternativt kan du bruge Auto_Open -hændelsesproceduren (ikke dækket her).
Fjern makro til alle ark
Denne makro fjerner beskyttelsen af alle ark i en projektmappe:
123456789 | 'Fjern beskyttelse af alle regnearkSub UnProtectAllSheets ()Dim ws Som regnearkFor hver gang i regnearkws.Beskyt "adgangskode"Næste wsAfslut Sub |
Beskyt alle ark Makro
Denne makro beskytter alle ark i en projektmappe:
123456789 | 'Beskyt alle regnearkSub ProtectAllSheets ()Dim ws Som regnearkFor hver gang i regnearkws.Protect "adgangskode"Næste wsAfslut Sub |