Робочі листи VBA Protect / Unprotect

Цей підручник навчить вас усьому про захист робочих аркушів Excel у VBA - Як захистити чи зняти захист робочих аркушів у Excel.

Зняти захист робочого аркуша Excel без пароля

Щоб зняти захист робочого аркуша, який не захищений паролем, скористайтеся цим простим рядком коду:

1 Робочі аркуші ("Аркуш1"). Зняти захист

Зняти захист робочого аркуша Excel за допомогою пароля

Щоб зняти захист робочого аркуша, захищеного паролем, потрібно також ввести пароль:

1 Робочі аркуші ("Аркуш1"). Зняти захист "Паролю"

Зняти захист аркуша - Загублений пароль

Щоб зняти захист аркуша, не знаючи пароля, потрібно скористатися надбудовою для відновлення пароля.

Захистіть робочі аркуші

Захист аркуша дозволяє заблокувати певні аспекти аркуша від редагування.

Це меню знаходиться у Домашня сторінка> Формат> Захист аркуша або клацнувши правою кнопкою миші на назві вкладки Аркуш:

Найчастіше це використовується для захисту «заблокованих» клітинок від редагування, дозволяючи лише кінцевому користувачу редагувати певні клітинки.

Ви можете заблокувати клітинки, вибравши їх і відкривши Вкладка захисту з Меню форматування комірок (CTRL + 1).

Ви також можете заборонити користувачеві змінювати структуру аркуша (вставляти, видаляти або змінювати розмір рядків і стовпців) або взаємодіяти з автофільтрами тощо.

Захист робочого аркуша - без пароля

Можливо, вам захочеться захистити аркуш без введення пароля. Це запобігає випадковим змінам аркуша, надаючи користувачеві доступ до внесення змін при бажанні.

1 Робочі аркуші ("Аркуш1"). Захист

Захист аркуша - Захист паролем

1 Робочі аркуші ("Аркуш1"). Захистіть "Пароль"

Захистіть налаштування аркуша

Наведені вище приклади захистять робочі листи зі стандартними параметрами захисту. Замість цього ви можете налаштувати захищене:

12345 Робочі аркуші ("Аркуш1"). Захист пароля: = strPassword, DrawingObjects: = Правда, Зміст: = Правда, Сценарії: = Правда, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False

Замість того, щоб використовувати наведений вище синтаксис, я рекомендую записати макрос з вашими потрібними налаштуваннями (вибраними з меню «Захист робочого аркуша» вище) та скопіювати + вставити записаний код у вашу процедуру.

Захистити аркуш - дозволити VBA вносити зміни

За замовчуванням, коли ви захищаєте аркуш, захист застосовується до операцій VBA на додаток до дій користувача. Якщо VBA намагається змінити заблоковану клітинку, ви побачите помилку під час виконання 1004. Щоб цього уникнути, ви можете зняти захист та знову захистити свої аркуші, коли VBA потребує взаємодії з ними:

123456789 Sub Edit_Sheet1 ()'Зняти захист аркуша 1Робочі аркуші ("Аркуш1"). Зняти захист`` Зробіть щось для аркуша1'Знову захистіть аркуш 1Робочі аркуші ("Аркуш1"). ЗахистEnd Sub

Однак легко забути зняти захист та/або знову захистити свої аркуші. Це може збільшити ймовірність помилки кодування.

Замість цього ви можете використовувати налаштування UserInterFaceOnly. Якщо значення ІСТИНА, аркуші будуть ТІЛЬКИ захищені від користувачів, НЕ від VBA.Ваш код VBA буде вільним для редагування аркуша так само, якби його було розблоковано.

Два важливі моменти щодо UserInterFaceOnly:

  • Цей параметр недоступний у меню захисту робочого аркуша (показано вище). Це налаштування, яке потрібно визначити у VBA.
  • Налаштування не зберігається під час закриття книги. Його слід визначати щоразу, коли відкривається книга.

Отже, щоб встановити властивість UserInterFaceOnly, слід розмістити таку процедуру події Workbook_Open у модулі ThisWorkbook:

1234567 Private Sub Workbook_Open ()Затемнити як робочий аркушДля кожного ws у ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = ПравдаНаступний wsEnd Sub

Workbook_Open - це спеціальна процедура події, яка запускатиметься кожного разу, коли книгу буде відкрито. Його потрібно розмістити в модулі ThisWorkbook. Крім того, ви можете скористатися процедурою події Auto_Open (тут не розглянуто).

Зняти захист з усіх макросів аркушів

Цей макрос знімає захист з усіх аркушів у книзі:

123456789 'Зняти захист з усіх робочих аркушівSub UnProtectAllSheets ()Затемнити як робочий аркушДля кожного ws у робочих аркушахws.Зняти захист "пароля"Наступний wsEnd Sub

Захистіть усі макроси аркушів

Цей макрос захистить усі аркуші у робочій книзі:

123456789 'Захистіть усі аркушіSub ProtectAllSheets ()Затемнити як робочий аркушДля кожного ws у робочих аркушахws.Захистіть "пароль"Наступний wsEnd Sub

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave