Fișe de lucru VBA Protect / Unprotect

Acest tutorial vă va învăța totul despre protecția foii de lucru Excel în VBA - Cum să protejați sau să vă protejați foile de lucru în Excel.

Desprotejați foaia de lucru Excel fără parolă

Pentru a proteja o foaie de lucru care nu este protejată prin parolă, utilizați această linie simplă de cod:

1 Fișe de lucru („Sheet1”). Neprotejați

Dezprotejați foaia de lucru Excel cu parolă

Pentru a proteja o foaie de lucru protejată prin parolă, trebuie să introduceți și parola:

1 Fișe de lucru („Sheet1”). Anulați protecția „Parolei”

Fără protecție foaie - Parolă pierdută

Pentru a proteja o foaie de lucru fără a cunoaște parola, trebuie să utilizați un supliment de recuperare a parolei.

Protejați foile de lucru

Protecția foii de lucru vă permite să blocați anumite aspecte ale foii de la editare.

Acest meniu se găsește în Acasă> Format> Protejați foaia sau făcând clic dreapta pe numele filei Foaie:

Cel mai frecvent, aceasta este utilizată pentru a proteja celulele „Blocate” de editare, permițând doar utilizatorului final să editeze anumite celule.

Puteți bloca celulele selectându-le și deschizând Fila Protecție din Meniul de formatare a celulei (CTRL + 1).

De asemenea, puteți împiedica utilizatorul să modifice structura foii de lucru (inserarea, ștergerea sau redimensionarea rândurilor și coloanelor) sau interacțiunea cu filtrele automate și multe altele.

Protejați foaia de lucru - fără parolă

Poate doriți să protejați o foaie de lucru fără a introduce o parolă. Acest lucru va preveni modificările accidentale ale foii de lucru, oferind în același timp utilizatorului acces pentru a face modificări, dacă dorește.

1 Fișe de lucru („Sheet1”). Protejați

Protejați foaia de lucru - Protejați prin parolă

1 Foi de lucru („Sheet1”). Protejați „parola”

Protejați setările foii de lucru

Exemplele de mai sus vor proteja foile de lucru cu setările standard de protecție. În schimb, ați putea dori să personalizați ceea ce este protejat:

12345 Foi de lucru ("Sheet1"). Protejați parola: = strPassword, DrawingObjects: = True, Conținut: = True, Scenarii: = 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

În loc să utilizați sintaxa de mai sus, vă recomand să înregistrați o macro cu setările dorite (alese cu meniul de protecție a foii de lucru de mai sus) și să copiați + să lipiți codul înregistrat în procedura dvs.

Protejați foaia - permiteți VBA să facă modificări

În mod implicit, când protejați o foaie, protecția se aplică operațiunilor VBA pe lângă acțiunile utilizatorului. Dacă VBA încearcă să modifice o celulă blocată, veți vedea o eroare de execuție 1004. Pentru a evita acest lucru, puteți să vă protejați și să vă protejați din nou fișele de lucru ori de câte ori VBA trebuie să interacționeze cu acestea:

123456789 Sub Edit_Sheet1 ()„Dezprotejați foaia 1Fișe de lucru („Sheet1”). Neprotejați„Faceți ceva la Sheet1'Reprotejați foaia1Fișe de lucru („Sheet1”). ProtejațiSfârșitul Sub

Cu toate acestea, este ușor să uitați să vă protejați și / sau să vă protejați din nou fișele de lucru. Acest lucru poate crește probabilitatea unei erori de codare.

În schimb, puteți utiliza setarea UserInterFaceOnly. Când este ADEVĂRAT, foile de lucru vor fi protejate DOAR de utilizatori, NU de VBA.Codul dvs. VBA va fi liber să editeze foaia de lucru la fel ca în cazul în care a fost deblocat.

Două puncte importante despre UserInterFaceOnly:

  • Această setare nu este disponibilă din meniul Protecție foaie de lucru (prezentat mai sus). Este o setare care trebuie definită în VBA.
  • Setarea nu este salvată când închideți un registru de lucru. Acesta trebuie redefinit de fiecare dată când este deschis un registru de lucru.

Deci, pentru a seta proprietatea UserInterFaceOnly, ar trebui să plasați următoarea procedură de lucru Workbook_Open în modulul ThisWorkbook:

1234567 Private Sub Workbook_Open ()Dim ws Ca foaie de lucruPentru fiecare ws din ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = AdevăratUrmătorul wsSfârșitul Sub

Workbook_Open este o procedură specială de eveniment care va rula de fiecare dată când registrul de lucru este deschis. Trebuie să fie plasat în modulul ThisWorkbook. Alternativ, puteți utiliza procedura evenimentului Auto_Open (neacoperită aici).

Deprotejați toate foile macro

Această macrocomandă va proteja toate foile dintr-un registru de lucru:

123456789 „Dezactivați toate foile de lucruSub UnProtectAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws din foi de lucruws.Defectați „parola”Următorul wsSfârșitul Sub

Protejați toate foile macro

Această macro va proteja toate foile dintr-un registru de lucru:

123456789 „Protejați toate foile de lucruSub ProtectAllSheets ()Dim ws Ca foaie de lucruPentru fiecare ws din foi de lucruws.Protejați „parola”Următorul wsSfârșitul Sub

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave