VBA Protect / Unprotect darblapas

Šī apmācība jums iemācīs visu par Excel darblapas aizsardzību VBA - kā aizsargāt vai atsaukt darblapas programmā Excel.

Atceliet Excel darblapas aizsardzību bez paroles

Lai atsauktu darblapas aizsardzību, kas nav aizsargāta ar paroli, izmantojiet šo vienkāršo koda rindu:

1 Darblapas ("Sheet1"). Neaizsargāt

Atceliet Excel darblapas aizsardzību ar paroli

Lai atsauktu darblapas aizsardzību, kas ir aizsargāta ar paroli, jums jāievada arī parole:

1 Darblapas ("Sheet1"). Atceliet "Paroles" aizsardzību

Atsaukt lapas aizsardzību - pazaudēta parole

Lai atceltu darblapas aizsardzību, nezinot paroli, jums jāizmanto paroles atkopšanas pievienojumprogramma.

Aizsargājiet darblapas

Darblapas aizsardzība ļauj bloķēt noteiktus lapas aspektus no rediģēšanas.

Šī izvēlne ir atrodama Sākums> Formāts> Aizsargāt lapu vai ar peles labo pogu noklikšķinot uz cilnes Lapas nosaukums:

Visbiežāk to izmanto, lai aizsargātu “bloķētās” šūnas no rediģēšanas, ļaujot tikai galalietotājam rediģēt noteiktas šūnas.

Jūs varat bloķēt šūnas, atlasot tās un atverot Cilne Aizsardzība no Šūnu formatēšanas izvēlne (CTRL + 1).

Varat arī liegt lietotājam mainīt darblapas struktūru (ievietot, dzēst vai mainīt rindu un kolonnu izmērus) vai mijiedarboties ar automātiskajiem filtriem un daudz ko citu.

Aizsargāt darblapu - bez paroles

Iespējams, vēlēsities aizsargāt darblapu, neievadot paroli. Tas novērsīs nejaušas darblapas izmaiņas, vienlaikus nodrošinot lietotājam piekļuvi izmaiņu veikšanai, ja vēlaties.

1 Darblapas ("Sheet1"). Aizsargāt

Aizsargāt darblapu - aizsargāt ar paroli

1 Darblapas ("Sheet1"). Aizsargājiet "Paroli"

Aizsargāt darblapas iestatījumus

Iepriekš minētie piemēri aizsargās darblapas ar standarta aizsardzības iestatījumiem. Tā vietā, iespējams, vēlēsities pielāgot aizsargājamo:

12345 Darblapas ("Sheet1"). Aizsargāt paroli: = strPassword, DrawingObjects: = True, Contents: = True, Scenāriji: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletedColumns: = False, AllowDeletedRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False

Tā vietā, lai izmantotu iepriekšminēto sintaksi, es iesaku ierakstīt makro ar vēlamajiem iestatījumiem (izvēlēts iepriekš esošajā izvēlnē Darblapas aizsardzība) un kopēt + ielīmēt ierakstīto kodu savā procedūrā.

Aizsargājiet lapu - ļaujiet VBA veikt izmaiņas

Pēc noklusējuma, kad aizsargājat lapu, aizsardzība tiek piemērota VBA darbībām papildus lietotāja darbībām. Ja VBA mēģina modificēt bloķētu šūnu, jūs redzēsit izpildlaika kļūdu 1004. Lai to izvairītos, varat atsaukt un atkārtoti aizsargāt savas darblapas, kad VBA ir nepieciešams ar tām mijiedarboties:

123456789 Apakšdaļa Edit_Sheet1 ()'Neaizsargāt lapu1Darblapas ("Sheet1"). Neaizsargāt“Dariet kaut ko ar lapu” 1“Aizsargāt lapu 1Darblapas ("Sheet1"). AizsargātBeigu apakš

Tomēr ir viegli aizmirst atcelt un/vai atkārtoti aizsargāt darblapas. Tas var palielināt kodēšanas kļūdas iespējamību.

Tā vietā varat izmantot iestatījumu UserInterFaceOnly. Ja ir PATIESA, darblapas tiks aizsargātas TIKAI no lietotājiem, nevis no VBA.Jūsu VBA kods varēs rediģēt darblapu tāpat kā tad, ja tā būtu atbloķēta.

Divi svarīgi punkti par UserInterFaceOnly:

  • Šis iestatījums nav pieejams izvēlnē Darblapas aizsardzība (parādīts iepriekš). Tas ir iestatījums, kas jādefinē VBA.
  • Iestatījums netiek saglabāts, aizverot darbgrāmatu. Katru reizi, atverot darbgrāmatu, tā ir jānosaka atkārtoti.

Tātad, lai iestatītu rekvizītu UserInterFaceOnly, šajā darbgrāmatas modulī jāievieto šāda notikuma Workbook_Open procedūra:

1234567 Privāta apakšdarbgrāmata_atvērt ()Dim ws kā darblapaPar katru ws šajā darba grāmatā. Darba lapasws.Protect UserInterfaceOnly: = PatiesaNākamais wsBeigu apakš

Workbook_Open ir īpaša notikuma procedūra, kas tiks veikta katru reizi, kad darbgrāmata ir atvērta. Tas jāievieto ThisWorkbook modulī. Varat arī izmantot notikuma procedūru Auto_Open (šeit nav apskatīta).

Atsaukt visu lapu makro aizsardzību

Šis makro noņems aizsardzību no visām darbgrāmatas izklājlapām:

123456789 'Neaizsargāt visas darblapasSub UnProtectAllSheets ()Dim ws kā darblapaPar katru ws darblapāsws.Aizsargāt "paroli"Nākamais wsBeigu apakš

Aizsargāt visas lapas makro

Šis makro aizsargās visas darbgrāmatas lapas:

123456789 'Aizsargājiet visas darblapasSub ProtectAllSheets ()Dim ws kā darblapaPar katru ws darblapāsws.Aizsargājiet "paroli"Nākamais wsBeigu apakš

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave