Delovni listi VBA Protect / Unprotect

Ta vadnica vas bo naučila vse o zaščiti delovnega lista Excel v VBA - Kako zaščititi ali odstraniti zaščito delovnih listov v Excelu.

Odstranite zaščito delovnega lista Excel brez gesla

Če želite odstraniti zaščito delovnega lista, ki ni zaščiten z geslom, uporabite to preprosto vrstico kode:

1 Delovni listi ("List1"). Odstrani zaščito

Odstranite zaščito delovnega lista Excel z geslom

Če želite odstraniti zaščito delovnega lista, zaščitenega z geslom, morate vnesti tudi geslo:

1 Delovni listi ("List1"). Odstrani zaščito "Geslo"

Odstrani zaščito - izgubljeno geslo

Če želite odstraniti zaščito delovnega lista, ne da bi vedeli geslo, morate uporabiti dodatek za obnovitev gesla.

Zaščitite delovne liste

Zaščita delovnega lista vam omogoča, da določene vidike lista zaklenete pred urejanjem.

Ta meni najdete v Domov> Oblika> Zaščitni list ali z desnim klikom na ime zavihka List:

Najpogosteje se to uporablja za zaščito »zaklenjenih« celic pred urejanjem, končnemu uporabniku pa omogoča le urejanje določenih celic.

Celice lahko zaklenete tako, da jih izberete in odprete Zavihek za zaščito od Meni za oblikovanje celic (CTRL + 1).

Uporabniku lahko tudi preprečite spreminjanje strukture delovnega lista (vstavljanje, brisanje ali spreminjanje velikosti vrstic in stolpcev) ali interakcijo s samodejnimi filtri in še veliko več.

Zaščita delovnega lista - brez gesla

Delovni list boste morda želeli zaščititi brez vnosa gesla. S tem boste preprečili nenamerne spremembe na delovnem listu, hkrati pa uporabniku omogočili dostop do sprememb po želji.

1 Delovni listi ("List1"). Zaščitite

Zaščita delovnega lista - zaščita z geslom

1 Delovni listi ("List1"). Zaščitite "Geslo"

Zaščitite nastavitve delovnega lista

Zgornji primeri bodo zaščitili delovne liste s standardnimi nastavitvami zaščite. Namesto tega boste morda želeli prilagoditi zaščiteno:

12345 Delovni listi ("List1"). Zaščita gesla: = strPassword, DrawingObjects: = True, Vsebina: = True, Scenariji: = 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

Namesto da bi uporabili zgornjo sintakso, priporočam, da posnamete makro z želenimi nastavitvami (izbranimi v zgornjem meniju Zaščita delovnega lista) in kopirate + prilepite posneto kodo v svoj postopek.

Zaščiti list - Dovoli VBA spremembam

Ko zaščitite list, privzeto zaščita velja tudi za operacije VBA poleg dejanj uporabnika. Če poskuša VBA spremeniti zaklenjeno celico, se prikaže napaka pri izvajanju 1004. Če se želite temu izogniti, lahko odstranite zaščito in znova zaščitite svoje delovne liste, kadar koli mora VBA komunicirati z njimi:

123456789 Sub Edit_Sheet1 ()'Odstrani zaščito 1Delovni listi ("List1"). Odstrani zaščito"Naredite nekaj za list1„Ponovno zaščitite list1Delovni listi ("List1"). ZaščititeEnd Sub

Vendar pa je enostavno pozabiti odstraniti zaščito in/ali ponovno zaščititi svoje delovne liste. To lahko poveča verjetnost napake pri kodiranju.

Namesto tega lahko uporabite nastavitev UserInterFaceOnly. Če je vrednost TRUE, bodo delovni listi zaščiteni SAMO pred uporabniki, NE pred VBA.Vaša koda VBA lahko prosto ureja delovni list, tako kot če bi bil odklenjen.

Dve pomembni točki o UserInterFaceOnly:

  • Ta nastavitev ni na voljo v meniju Zaščita delovnega lista (prikazano zgoraj). To je nastavitev, ki jo je treba definirati v VBA.
  • Nastavitev se ne shrani, ko zaprete delovni zvezek. Vsakič, ko odprete delovni zvezek, ga je treba znova opredeliti.

Če želite nastaviti lastnost UserInterFaceOnly, morate v modul ThisWorkbook postaviti naslednji postopek dogodka Workbook_Open:

1234567 Private Sub Workbook_Open ()Zatemni kot delovni listZa vsako ws v ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = ResNaslednji wsEnd Sub

Workbook_Open je poseben postopek dogodka, ki se bo izvajal vsakič, ko je delovni zvezek odprt. Vstaviti ga je treba v modul ThisWorkbook. Druga možnost je, da uporabite postopek dogodka Auto_Open (tukaj ni zajet).

Odstranite zaščito vseh makrov listov

Ta makro bo odstranil zaščito vseh listov v delovnem zvezku:

123456789 'Odstrani zaščito vseh delovnih listovSub UnProtectAllSheets ()Zatemni kot delovni listZa vsak ws na delovnih listihws.Odstrani "geslo"Naslednji wsEnd Sub

Zaščitite makro vseh listov

Ta makro bo zaščitil vse liste v delovnem zvezku:

123456789 'Zaščitite vse delovne listeSub ProtectAllSheets ()Zatemni kot delovni listZa vsak ws na delovnih listihws.Zaščitite "geslo"Naslednji wsEnd Sub

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave