Pracovní listy VBA Protect / Unprotect

Tento tutoriál vás naučí vše o ochraně listu aplikace Excel ve VBA - Jak chránit nebo odemknout listy v aplikaci Excel.

Zrušte ochranu listu aplikace Excel bez hesla

Chcete-li zrušit ochranu listu, který není chráněn heslem, použijte tento jednoduchý řádek kódu:

1 Pracovní listy („List1“). Zrušte ochranu

Zrušte ochranu listu aplikace Excel heslem

Chcete-li zrušit ochranu listu chráněného heslem, musíte také zadat heslo:

1 Pracovní listy („List1“). Zrušte ochranu „hesla“

Odemknout list - Ztracené heslo

Chcete-li odemknout list bez znalosti hesla, musíte použít doplněk pro obnovení hesla.

Chraňte pracovní listy

Ochrana listu umožňuje zamknout určité aspekty listu před editací.

Toto menu najdete v Domů> Formát> Chránit list nebo kliknutím pravým tlačítkem na název karty List:

Nejčastěji se to používá k ochraně „Zamčených“ buněk před úpravami, což koncovému uživateli umožňuje upravit pouze určité buňky.

Buňky můžete zamknout jejich výběrem a otevřením souboru Záložka ochrany z Nabídka formátování buněk (CTRL + 1).

Můžete také zabránit uživateli ve změně struktury listu (vkládání, mazání nebo změna velikosti řádků a sloupců) nebo v interakci s AutoFilters a mnoho dalšího.

Chraňte pracovní list - bez hesla

Možná budete chtít list chránit bez zadávání hesla. Tím se zabrání nechtěným změnám v listu a zároveň se uživateli poskytne přístup k provedení změn, pokud je to žádoucí.

1 Pracovní listy („List1“). Chraňte

List ochrany - ochrana heslem

1 Pracovní listy („List1“). Chraňte „Heslo“

Chraňte nastavení pracovního listu

Výše uvedené příklady budou chránit listy se standardním nastavením ochrany. Místo toho můžete chtít upravit, co je chráněno:

12345 Pracovní listy („List1“). Chránit heslo: = strPassword, DrawingObjects: = True, Obsah: = True, Scénáře: = 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

Namísto použití výše uvedené syntaxe doporučuji zaznamenat makro s požadovaným nastavením (zvoleným v nabídce Ochrana listu výše) a zkopírovat + vložit zaznamenaný kód do vaší procedury.

Chránit list - umožnit VBA provádět změny

Ve výchozím nastavení se při ochraně listu ochrana vztahuje kromě operací uživatelů také na operace VBA. Pokud se VBA pokusí upravit uzamčenou buňku, zobrazí se chyba za běhu 1004. Abyste tomu zabránili, můžete své listy odemknout a znovu chránit, kdykoli s nimi VBA potřebuje komunikovat:

123456789 Sub Edit_Sheet1 ()'Odemknout list 1Pracovní listy („List1“). Zrušte ochranu„Udělejte něco pro list 1„Chraňte list 1Pracovní listy („List1“). ChraňteEnd Sub

Je však snadné zapomenout odemknout a/nebo znovu chránit své pracovní listy. To může zvýšit pravděpodobnost chyby kódování.

Místo toho můžete použít nastavení UserInterFaceOnly. Je -li hodnota PRAVDA, budou listy chráněny POUZE před uživateli, NE před VBA.Váš kód VBA bude moci list upravovat stejně, jako kdyby byl odemčen.

Dva důležité body o UserInterFaceOnly:

  • Toto nastavení není k dispozici v nabídce Ochrana listu (viz výše). Je to nastavení, které musí být definováno ve VBA.
  • Při zavření sešitu se nastavení neuloží. Musí být znovu definován při každém otevření sešitu.

Chcete -li tedy nastavit vlastnost UserInterFaceOnly, měli byste do modulu ThisWorkbook umístit následující proceduru události Workbook_Open:

1234567 Soukromý dílčí sešit_Otevřít ()Dim ws As WorksheetZa každé ws v ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = TrueDalší wsEnd Sub

Workbook_Open je procedura speciální události, která se spustí pokaždé, když je sešit otevřený. Musí být umístěn v modulu ThisWorkbook. Alternativně můžete použít proceduru události Auto_Open (zde není zahrnuto).

Zrušte ochranu makra všech listů

Toto makro odstraní všechny listy v sešitu:

123456789 „Zrušte ochranu všech pracovních listůSub UnProtectAllSheets ()Dim ws As WorksheetZa každé ws v pracovních listechws.Onprotect "heslo"Další wsEnd Sub

Chraňte všechny listy v makru

Toto makro bude chránit všechny listy v sešitu:

123456789 „Chraňte všechny pracovní listySub ProtectAllSheets ()Dim ws As WorksheetZa každé ws v pracovních listechws.Chraňte "heslo"Další wsEnd Sub

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave