„VBA Protect / Unprotect“ darbalapiai

Šioje pamokoje sužinosite viską apie „Excel“ darbalapio apsaugą „VBA“ - kaip apsaugoti arba panaikinti „Excel“ darbalapių apsaugą.

Atšaukite „Excel“ darbalapio apsaugą be slaptažodžio

Norėdami panaikinti apsaugą darbalapyje, kuris nėra apsaugotas slaptažodžiu, naudokite šią paprastą kodo eilutę:

1 Darbo lapai („Sheet1“). Neapsaugoti

Atšaukite „Excel“ darbalapio apsaugą slaptažodžiu

Norėdami panaikinti apsaugą darbalapyje, kuris apsaugotas slaptažodžiu, taip pat turite įvesti slaptažodį:

1 Darbo lapai („Sheet1“). Panaikinkite „Slaptažodžio“ apsaugą

Neapsaugoti lapo - prarastas slaptažodis

Norėdami panaikinti darbalapio apsaugą nežinodami slaptažodžio, turite naudoti slaptažodžio atkūrimo priedą.

Apsaugokite darbalapius

Apsauga nuo darbalapio leidžia užblokuoti tam tikrus lapo aspektus nuo redagavimo.

Šis meniu yra Pagrindinis> Formatas> Apsaugoti lapą arba dešiniuoju pelės klavišu spustelėdami skirtuko „Lapas“ pavadinimą:

Dažniausiai tai naudojama „užrakintoms“ ląstelėms apsaugoti nuo redagavimo, tik galutiniam vartotojui leidžiama redaguoti tam tikras ląsteles.

Galite užrakinti langelius, pasirinkdami juos ir atidarydami Apsaugos skirtukasLangelių formatavimo meniu (CTRL + 1).

Taip pat galite neleisti vartotojui keisti darbalapio struktūros (įterpti, ištrinti ar pakeisti eilučių ir stulpelių dydį) arba sąveikauti su automatiniais filtrais ir dar daugiau.

Apsaugoti darbalapį - be slaptažodžio

Galbūt norėsite apsaugoti darbalapį neįvesdami slaptažodžio. Taip išvengsite atsitiktinių darbalapio pakeitimų ir suteiksite vartotojui prieigą atlikti pakeitimus, jei to pageidaujama.

1 Darbo lapai („Sheet1“). Apsaugoti

Apsaugoti darbalapį - apsaugoti slaptažodžiu

1 Darbo lapai („Sheet1“). Apsaugokite „Slaptažodį“

Apsaugoti darbalapio nustatymus

Pirmiau pateikti pavyzdžiai apsaugo darbalapius standartiniais apsaugos nustatymais. Vietoj to galbūt norėsite tinkinti tai, kas saugoma:

12345 Darbo lapai („Sheet1“). Apsaugoti slaptažodį: = strPassword, DrawingObjects: = True, Content: = True, Scenarijus: = True, _UserInterfaceOnly: = Tiesa, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletedColumns: = False, AllowDeletedRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False

Užuot naudojęs aukščiau pateiktą sintaksę, rekomenduoju įrašyti makrokomandą su pageidaujamais nustatymais (pasirinktu aukščiau esančiame darbalapio apsaugos meniu) ir nukopijuoti + įklijuoti įrašytą kodą į savo procedūrą.

Apsaugoti lapą - leiskite VBA atlikti pakeitimus

Pagal numatytuosius nustatymus, kai apsaugote lapą, apsauga, be vartotojo veiksmų, taikoma ir VBA operacijoms. Jei VBA bandys modifikuoti užrakintą langelį, pamatysite vykdymo laiko klaidą 1004. Norėdami to išvengti, galite panaikinti ir apsaugoti savo darbalapius, kai VBA reikia su jais bendrauti:

123456789 Antrasis redagavimo_skaičius1 ()„Neapsaugoti lapo 1Darbo lapai („Sheet1“). Neapsaugoti„Padarykite ką nors lape1„Apsaugoti lapą 1Darbo lapai („Sheet1“). ApsaugotiPabaiga Sub

Tačiau lengva pamiršti, kad jūsų darbalapiai yra apsaugoti ir (arba) apsaugoti iš naujo. Tai gali padidinti kodavimo klaidos tikimybę.

Vietoj to galite naudoti nustatymą „UserInterFaceOnly“. Kai tiesa, darbalapiai bus apsaugoti TIK nuo vartotojų, o ne nuo VBA.Jūsų VBA kodas gali laisvai redaguoti darbalapį taip, kaip jis būtų atrakintas.

Du svarbūs dalykai apie „UserInterFaceOnly“:

  • Šis nustatymas nepasiekiamas darbalapio apsaugos meniu (parodyta aukščiau). Tai nustatymas, kuris turi būti apibrėžtas VBA.
  • Nustatymas neišsaugomas, kai uždarote darbaknygę. Ji turi būti iš naujo apibrėžta kiekvieną kartą atidarius darbaknygę.

Taigi, norėdami nustatyti ypatybę „UserInterFaceOnly“, „ThisWorkbook“ modulyje turėtumėte įdėti šią „Workbook_Open“ įvykio procedūrą:

1234567 Privati ​​antrinė darbo knyga_Atidaryti ()Dim ws kaip darbalapisUž kiekvieną ws šioje darbo knygoje. Darbo lapaiws.Protect UserInterfaceOnly: = TiesaKitas wsPabaiga Sub

„Workbook_Open“ yra speciali įvykio procedūra, kuri bus vykdoma kiekvieną kartą atidarius darbaknygę. Jis turi būti įdėtas į „ThisWorkbook“ modulį. Arba galite naudoti įvykio procedūrą „Auto_Open“ (čia neaptariama).

Panaikinti visų lakštų makrokomandos apsaugą

Ši makrokomanda panaikins visų darbaknygės lapų apsaugą:

123456789 „Neapsaugoti visų darbalapiųSub UnProtectAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws darbalapiuosews.Atsisaugoti „slaptažodį“Kitas wsPabaiga Sub

Apsaugokite visus lakštus makrokomandoje

Ši makrokomanda apsaugos visus darbaknygės lapus:

123456789 „Apsaugokite visus darbalapiusSub ProtectAllSheets ()Dim ws kaip darbalapisUž kiekvieną ws darbalapiuosews.Protect "slaptažodis"Kitas wsPabaiga Sub

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave