Excel VBA Protect Sheet

Защита рабочего листа - важная задача для тех, кто очень часто работает в Microsoft Excel. Это задача, которая вам нужна для защиты вашего листа от редактирования другим пользователем. Предположим, вы отправляете отчет руководству, а затем руководство сознательно или по ошибке меняет параметры или значения в отчете. Становится беспокойным, чтобы идентифицировать ошибку, и в то же время переделка - это то, что отнимает у вас время. Чтобы преодолеть эту проблему, всегда рекомендуется защитить лист (ы) для редактирования с помощью пароля. Эта опция помогает вам, не позволяя пользователю вносить какие-либо изменения на листе (ах). Вы также можете поделиться паролем с человеком, который предназначен, а также уполномочен вносить изменения. Несмотря на то, что в приложении Excel имеется опция «Защитить рабочий лист» на вкладке «Просмотр», расположенная на ленте Excel, она становится беспокойной, когда вам нужно защитить более одного листа. Это потратит достаточно времени на защиту каждого листа по одному. Вместо этого рекомендуется писать код VBA, который может защитить один или несколько листов из вашей книги для редактирования.

Синтаксис VBA Protect Sheet

Эта встроенная функция VBA, связанная с Worksheet, позволяет защитить лист с помощью пароля. Синтаксис для функции защиты листа VBA следующий:

Все параметры являются необязательными в этой функции, которую можно угадать через квадратные скобки, указанные для каждого из них.

  • Пароль: указывает пароль для листа. Если не указано иное, лист будет защищен без пароля, и пользователь сможет редактировать его без запроса пароля.
  • DrawingObjects: необязательные аргументы, которые позволяют вам защитить различные формы листа. Принимает логические значения. По умолчанию установлено значение ЛОЖЬ.
  • Содержание: Необязательный аргумент. Защищает все объекты. По умолчанию значения установлены в TRUE.
  • Сценарии: защищает все различные сценарии. По умолчанию установлено значение TRUE.
  • UserInterfaceOnly: защищает пользовательский интерфейс, но не макросы. Значение по умолчанию TRUE, если макрос игнорируется, так как пользовательский интерфейс будет защищен.
  • AllowFormattingCells: значение по умолчанию установлено в FALSE, из-за чего пользователь не может отформатировать ячейки листа. Если установлено значение TRUE, пользователь может форматировать ячейки на листе.
  • AllowInsertingColumns: значение по умолчанию установлено в FALSE. Если установлено значение ИСТИНА, пользователь может вставить столбец в лист.
  • AllowInsertingRows: значением по умолчанию является ЛОЖЬ. Если установлено значение TRUE, пользователь может вставлять строки в лист.
  • AllowInsertingHyperlinks: значение по умолчанию установлено в FALSE. Если установлено значение ИСТИНА, пользователь может вставлять гиперссылки на лист.
  • AllowDeletingColumns: значение по умолчанию установлено в FALSE. Если установлено значение ИСТИНА, пользователь может удалить любой столбец с листа.
  • AllowDeletingRows: значением по умолчанию является ЛОЖЬ. Если установлено значение ИСТИНА, пользователь может удалить любое количество строк с листа.
  • AllowSorting: Значением по умолчанию является ЛОЖЬ. Если установлено значение ИСТИНА, пользователь может сортировать данные, представленные на листе.
  • AllowFiltering: значением по умолчанию является ЛОЖЬ. Если установлено значение ИСТИНА, пользователь может фильтровать данные, представленные на листе.
  • AllowUsingPivotTables: Значением по умолчанию является ЛОЖЬ. Если установлено значение TRUE, пользователь может использовать и изменять сводные таблицы.

Как защитить лист в Excel VBA?

Ниже приведены различные примеры защиты листа в Excel с использованием VBA Protect.

Вы можете скачать этот шаблон Excel для защиты листа VBA здесь - Шаблон Excel для защиты листа VBA

VBA Protect Sheet - Пример № 1

Предположим, у нас есть лист с именем «Пример 1» в книге под названием «VBA Protect Sheet». Мы хотим, чтобы этот лист был защищен паролем. Для этого выполните следующие шаги:

Шаг 1. Вставьте новый модуль в редактор Visual Basic (VBE). Нажмите на Вставить > выбрать модуль .

Шаг 2: Определите новую подпроцедуру в модуле.

Код:

 Sub Example_1 () End Sub 

Шаг 3: Теперь мы должны использовать функцию Protect, которую можно применить к объекту с именем Worksheet. Запустите код с объектом Worksheets и введите имя листа в скобках, которое вы хотите защитить.

Код:

 Sub Example_1 () Рабочие таблицы («Пример 1») End Sub 

Шаг 4: Теперь поставьте точку после закрывающих скобок и используйте ключевое слово Protect, которое инициирует процесс защиты листа с именем « Пример 1 ».

Код:

 Sub Example_1 () Рабочие таблицы («Пример 1»). Protect End Sub 

Вы можете остановиться здесь, защищая лист. Поскольку все аргументы являются необязательными, ваш лист все еще будет защищен, но не будет запрашивать у пользователя пароль перед редактированием и будет таким же, как незащищенный лист. Вы, конечно, не хотели бы этого таким образом. Поэтому добавьте надежный пароль для защиты этого листа на следующем шаге.

Шаг 5: Введите ключевое слово Password и используйте надежный пароль для защиты этого листа.

Код:

 Sub Example_1 () Worksheets ("Пример 1"). Защитить пароль: = " " End Sub 

Мы будем использовать только первый аргумент функции, которая называется паролем, а для остальных всех аргументов мы будем использовать значения по умолчанию.

Шаг 6: Вот и все, вы можете запустить этот код, нажав F5 или кнопку Run, и увидите, что файл теперь защищен и попросит пользователя ввести пароль, как только он попытается отредактировать любую из ячеек.

Вот как мы защищаем лист, используя функцию защиты VBA.

VBA Protect Sheet - Пример № 2

Теперь мы хотим защитить все листы, присутствующие в рабочей книге. Для этого выполните следующие шаги:

Шаг 1: Определите подпроцедуру в модуле.

Код:

 Sub Example_2 () End Sub 

Шаг 2: Определите новую переменную как рабочий лист, используя Dim.

Код:

 Sub Example_2 () Dim wrk_sht As Worksheet End Sub 

Шаг 3: Запустите цикл For. Этот цикл должен выполняться до последнего рабочего листа активной рабочей книги.

Код:

 Sub Example_2 () Dim wrk_sht как рабочий лист для каждого wrk_sht в ActiveWorkbook.Worksheets End Sub 

Эта строка кода выбирает каждую рабочую таблицу активной рабочей книги и сохраняет ее под переменной wrk_sht для каждой итерации цикла. Цикл заканчивается, как только последний лист рабочей книги выбран и сохранен в переменной wrk_sht. Нам нужно определить операцию для этого цикла. Это, безусловно, будет защищать лист с помощью пароля.

Шаг 4: Теперь используйте функцию Protect для защиты листов, хранящихся в переменной wrk_sht для каждой итерации цикла For.

Код:

 Sub Example_2 () Dim wrk_sht как рабочая таблица для каждого wrk_sht в ActiveWorkbook.Worksheets wrk_sht.Protect Password: = " " End Sub 

Шаг 5: Используйте оператор Next, он позволяет циклу работать, пока каждый лист не будет защищен.

Код:

 Sub Example_2 () Dim wrk_sht как рабочий лист для каждого wrk_sht в ActiveWorkbook.Worksheets wrk_sht.Protect Password: = " " Next End Sub 

Если вы запустите этот код, каждый лист активной рабочей книги будет защищен паролем, и вам нужно будет вводить его каждый раз, когда вы захотите отредактировать листы.

То, что нужно запомнить

  • Рекомендуется использовать пароль при защите листа. В противном случае пользователю не будет предложено ввести пароль, и он сможет напрямую редактировать файл, хотя вы его защитили.
  • Рекомендуется запомнить пароль. В противном случае, забыв о том же самом, вы никогда не сможете редактировать файл. Возможно, вам придется пройти через различные методы, если вы потеряете пароль, и эти методы выходят за рамки этой статьи.

Рекомендуемые статьи

Это руководство по VBA Protect Sheet. Здесь мы обсудим, как защитить или заблокировать листы с помощью функции VBA Protect в Excel, а также на практических примерах и загружаемом шаблоне Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Как переименовать лист в Excel VBA?
  2. Шаги, чтобы снять защиту листа в Excel
  3. Лист активации VBA (Примеры с шаблоном Excel)
  4. Как скопировать лист Excel?

Категория: