Excel макрос на защиту всех листов с паролем

Skip to content

Как защитить все листы в файле

На чтение 2 мин. Просмотров 2.8k.

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

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

Код макроса

Sub ZaschititVseListi()
 'Шаг 1: Объявляем переменные
 Dim ws As Worksheet
 'Шаг : Запускаем цикл через все рабочие листы
 For Each ws In ActiveWorkbook.Worksheets
 'Шаг 3: Ставим защиту и переходим к следующему листу
 ws.Protect Password:="КРАСНЫЙ"
 Next ws
 End Sub

Как работает этот код

  1. Шаг 1 объявляет объект под названием WS. Он создает контейнер памяти для каждого рабочего листа.
  2. Шаг 2 начинает процесс в Excel — проходит через все рабочие листы.
  3. На шаге 3, макрос применяет защиту с данным паролем, а затем возвращается обратно, чтобы получить рабочий лист.

Как использовать

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши personal.xlb в окне Project.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

#1

25.04.2017 11:54:19

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

Код
    Sheets("Лист1").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("Лист2").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

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

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#2

25.04.2017 11:55:41

Код
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True

тоже самое и со снятием

Изменено: The_Prist25.04.2017 11:55:52

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

Огромное спасибо.
Еще вопрос, как мне запаролить сам макрос, чтоб при клике на него запрашивался пароль?

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

В меню редактора: Tools — VbaProject Properties — вкладка Protection

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

Что то не получается.
Ввожу пароль но как мог кликнуть на макрос без пароля так и могу.

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Птицу поставили в Lock Project?

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#7

25.04.2017 14:22:12

Цитата
babulia написал:
как мог кликнуть на макрос без пароля так и могу

скорее всего забыли после установки пароля книгу сохранить -закрыть -открыть заново. Тогда без ввода пароля уже в код не попадете.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

Хм, понял.
Наверное я не так задал вопрос. Мне нужно чтоб через пароль я мог попасть не в сам текст макроса, хотя и это тоже пригодится, спасибо, а чтоб я не мог кликнуть на привязанную к макросу кнопку.
Грубо говоря я написал два макроса. К одному прилепил кнопку из элемента управления форм и назвал её Lock и ко второму прилепил кнопку и назвал её Unlock.
По тому методу что вы написали я не могу редактировать сам макрос и смотреть какой текст в нем написан, но я могу кликать на кнопки которые я создал, да и через вид-макросы, я так же могу их выполнять. Просто редактировать не могу.
Как мне запаролить само выполнение макроса?
Надеюсь в этот раз обьяснил всё правильно))))

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Работа с диалогами

Вам нужен InputBox.
Там есть прям конкретный пример ввода пароля для выполнения кода.

Изменено: The_Prist25.04.2017 15:16:56

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

#10

25.04.2017 16:07:37

Спасибо, но этот способ какой-то сильно мудренный.
Реализовал просто командой, которую дописал перед командой выполнения макроса, которая разблокирует листы:

Код
Dim password As String
password = InputBox("Введите пароль")
If password = "" Then
        Exit Sub
    End If
If password <> "***" Then
MsgBox "Неверный пароль", vbExclamation
        Exit Sub
    End If

И далее команда самого макроса

Всем огромное спасибо за помощь!
Ну и если совсем обнаглеть, можно ли как-то слить обе кнопки макроса в единое окно, чтоб я мог перетягивать одним выделенным окном обе кнопки, закрытия и открытия листов для редактирования?
Это чисто для себя поиграться.

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#11

25.04.2017 16:20:47

Цитата
babulia написал:
этот способ какой-то сильно мудренный

чем? Тем, что там обрабатывается не только неверный пароль, но и нажатие кнопки Отмена? Т.е. три правильных строки вместо Ваших <> «» для Вас уже сильно мудро? :)
Почему считаю, что  <> «» неправильно? Если человек оставит поле пароля пустым и нажмет Ок, то будет выход из процедуры без всяких пояснений. Это может ввести в заблуждение. Поэтому уж лучше вообще уберите эту проверку, чем оставлять в таком виде.

Цитата
babulia написал:
Ну и если совсем обнаглеть

то можно и правила форума прочитать. Там написано, что в одну тему все свои вопросы кидать не совсем правильно. Один вопрос — одна тема. Когда будете создавать напишите более понятно, что имеется ввиду под

Цитата
babulia написал:
перетягивать одним выделенным окном обе кнопки

Какое еще окно? Где оно? Откуда взялось или должно взяться?
Да и коды принято оформлять соответствующими тегами :)

Изменено: The_Prist25.04.2017 16:22:28

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

Честно говоря думал что Ваш способ относится не к написанию макроса, а к управлению через другую форму, как на видео

https://www.youtube.com/watch?v=mgUGr6VFADs

поэтому сходу испугался и начал искать как это сделать просто макросом))))

 

The_Prist

Пользователь

Сообщений: 14181
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#13

25.04.2017 16:51:07

Цитата
babulia написал:
относится не к написанию макроса

Это откуда такие мысли вообще? Я же даже конкретную ссылку на статью дал, там и намека на видео нет, как впрочем и на создание формы, тем более на Visual Studio. Там ровно то, о чем спросили, включая запрос пароля через InputBox.
Интерес к теме потерял.

Изменено: The_Prist25.04.2017 16:51:45

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

babulia

Пользователь

Сообщений: 76
Регистрация: 27.05.2014

#14

25.04.2017 16:58:03

С любом случае спасибо

Предположим, у вас есть книга, содержащая несколько листов, и теперь вам нужно защитить все рабочие листы или некоторые конкретные рабочие листы, обычно в Excel вы можете защищать лист только один за другим с помощью функции Защитить лист, но этот метод утомителен и требует много времени, если необходимо защитить большое количество листов. Как быстро и легко защитить сразу несколько листов в Excel?

Защитите все листы сразу с помощью кода VBA

Защитите несколько листов одновременно с помощью Kutools for Excel

Снимите защиту сразу с нескольких листов с помощью kutools for Excel


стрелка синий правый пузырь Защитите все листы сразу с помощью кода VBA

С помощью следующего кода VBA вы можете защитить сразу все листы активной книги одним и тем же паролем, сделайте следующее:

1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: защитить все листы в книге сразу:

Sub protect_all_sheets()
top: 
pass = InputBox("password?") 
repass = InputBox("Verify Password") 
If Not (pass = repass) Then 
MsgBox "you made a boo boo" 
Goto top 
End If 
For i = 1 To Worksheets.Count 
If Worksheets(i).ProtectContents = True Then Goto oops 
Next 
For Each s In ActiveWorkbook.Worksheets 
s.Protect Password:=pass 
Next 
Exit Sub 
oops: MsgBox "I think you have some sheets that are already protected. Please unprotect all sheets then running this Macro." 
End Sub

3, Затем нажмите F5 ключ для запуска кода и введите пароль для защищенных листов в поле подсказки, см. снимок экрана:

док-защита-несколько-листов1-1

4. Нажмите OK, а затем введите пароль еще раз, чтобы подтвердить пароль.

док-защита-несколько-листов2-2

5. Затем нажмите OK, и все листы были защищены одним паролем.


стрелка синий правый пузырь Защитите несколько листов одновременно с помощью Kutools for Excel

Иногда вы не хотите защищать все листы в своей книге, а хотите защитить только некоторые конкретные листы, в этой ситуации приведенный выше код не будет работать. Но с Kutools for ExcelАвтора Защитить лист утилита, вы можете быстро и легко защитить как все листы, так и отдельные листы.

После установки Kutools for Excel, выполните следующие действия:

1. Нажмите Кутулс Плюс > Защитить лист, см. снимок экрана:

2. В Защитить лист В диалоговом окне выберите листы, которые нужно защитить. (По умолчанию проверяются все листы в текущей книге.) См. Снимок экрана:

док-защита-несколько-листов4-4

3, И нажмите OK, а затем введите и подтвердите пароль в диалоговом окне «Защита рабочего листа». Смотрите скриншот:

док-защита-несколько-листов5-5

4. Затем нажмите OK, выбранные листы защищены.

Щелкните «Защитить лист», чтобы узнать больше об этой функции.


стрелка синий правый пузырь Снимите защиту сразу с нескольких листов с помощью kutools for Excel

Как вы могли снять защиту с нескольких защищенных листов в книге одновременно? Конечно, Kutools for Excel также предоставляет Снять защиту листа утилита, позволяющая сразу же снять с них защиту.

Пожалуйста, сделайте следующие шаги:

1. Откройте книгу, содержащую защищенные листы.

2. Затем нажмите Кутулс Плюс > Снять защиту листа, см. снимок экрана:

3. В Снять защиту листа диалоговое окно, защищенные листы заносятся в список, затем щелкните Ok кнопку, см. снимок экрана:

док-защита-несколько-листов7-7

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

док-защита-несколько-листов8-8

5. После ввода пароля нажмите Ok, все отмеченные листы в списке не защищены.

Примечание: Рабочие листы должны иметь одинаковый пароль.

Чтобы узнать больше об этой функции Снять защиту листа.

Скачать и бесплатную пробную версию Kutools for Excel от Yhao сейчас!


стрелка синий правый пузырь Демонстрация: защитите или снимите защиту сразу со всех рабочих листов с помощью Kutools for Excel


Связанная статья:

Как снять защиту сразу с нескольких листов в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Содержание

  1. Как защитить лист в Excel паролем? Защита всех листов разными паролями
  2. Как установить защиту листа в Excel 2003
  3. Как установить защиту листа в Excel 2007
  4. Как установить защиту листа в Excel 2010
  5. Как защитить лист паролем в Excel 2013
  6. Как защитить лист в Excel 2016
  7. Быстрая защита листов
  8. Защита листов без пароля
  9. Защита листов одним паролем
  10. Защита листов отдельными случайными паролями
  11. Выборочная защита листов паролями из файла
  12. Надстройка для быстрой установки защиты
  13. Надстройка позволяет:
  14. Как защитить лист от пользователя, но не от макроса?
  15. Excel макрос на защиту всех листов с паролем
  16. Как автоматически защитить все рабочие листы при закрытии книги Excel?

Как защитить лист в Excel паролем? Защита всех листов разными паролями

Защита листа от изменений пользователями в Excel устанавливается разными способами, рассмотрим два варианта установки защиты листа, классический, при помощи стандартных средств Excel и менее распространенный — с помощью макроса.

Как установить защиту листа в Excel 2003

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

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

Как установить защиту листа в Excel 2007

Кнопка «Защитить лист» расположена на вкладке «Рецензирование». Нажав её, Вы без труда установите защиту на активный лист стандартным способом.

Для отключения защиты листа можно установить пароль.

Как установить защиту листа в Excel 2010

Защита листа в Excel 2010 осуществляется аналогично тому, как это делается в Excel 2007. Для этого необходимо перейти на вкладку «Рецензирование» и нажать на кнопку «Защитить лист».

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

Как защитить лист паролем в Excel 2013

Для защиты листа в Excel 2013 необходимо перейти на вкладку «Рецензирование», как и в предыдущих версиях и в группе кнопок «Изменения» нажать кнопку «Защитить лист», отметить галочками разрешенные пользователям действия и при необходимости ввести пароль с последующим его подтверждением.

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

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

Быстрая защита листов

Если в рабочей книге содержится несколько листов, то можно пройтись по каждому листу и на каждый установить защиту. Групповая защита листов в Excel не предусмотрена, только по одному. Ускорить этот процесс можно при помощи VBA-надстройки, которая устанавливается в Excel и добавляет к его стандартным возможностям дополнительный функционал. После установки надстройки на ленте Excel появляется дополнительная кнопка, при помощи которой можно вызвать диалоговое окно и выбрать нужный режим установки защиты.

Защита листов без пароля

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

Защита листов одним паролем

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

Защита листов отдельными случайными паролями

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

Выборочная защита листов паролями из файла

Если в рабочей книге Excel в столбце «A» написать имена листов, а в столбце «B» — пароли для защиты листов с соответствующими именами и сохранить эту книгу на жестком диске, то такой файл можно использовать для программной установки защиты. Если файл содержит более одного листа, то лист рабочей книги, содержащий имена и пароли должен быть активным при сохранении. В диалоговом окне программы выбирается соответствующая опция и при помощи кнопки обзора указывается файл с паролями. Этот вариант защиты можно использовать в случаях, когда необходимо установить пароли не на все листы, а выборочно.

Надстройка для быстрой установки защиты

Надстройка позволяет:

1. Быстро защитить листы рабочей книги без пароля (поле для ввода пароля должно оставаться пустым);

2. быстро установить защиту с использованием одного пароля;

3. защитить листы случайными паролями заданной длины (от 1 до 255 символов);

4. сохранить пароли в отдельный файл (файл сохраняется на жестком диске в папке с защищаемой рабочей книгой);

5. использовать для установки защиты пароли из файла (столбец «А» — имена листов, столбец «В» — пароли к ним);

6. выборочно защищать листы (в файле с именами и паролями указываются только те имена листов, которые необходимо запаролить);

7. устанавливать различные сочетания разрешенных действий для защищенных листов;

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

*имена листов указываются без пробелов, через точку с запятой «;»

также могут использоваться специальные символы совпадения * и ?

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

Источник

Как защитить лист от пользователя, но не от макроса?

Иногда бывает полезно защитить данные на листе от изменений другими пользователями, но при этом так же надо будет работать с данными на листе из VBA(т.е. вносить изменения с помощью кода). Обычная защита листа, конечно, подходит, хоть и есть небольшой недостаток: надо перед каждым обращением к листу снимать с него защиту, выполнять необходимые действия и защищать заново:

Sub Write_in_ProtectSheet() ‘снимаем защиту с листа Worksheets(«Лист1»).Unprotect ‘если лист защищен с паролем 1234: Worksheets(«Лист1»).Unprotect «1234» ‘действия на листе.Например,изменение значения ячейки А1 Cells(«A1»).Value = «www.excel-vba.ru» ‘устанавливаем защиту на лист Worksheets(«Лист1»).Protect ‘если лист был защищен с паролем 1234: Worksheets(«Лист1»).Protect «1234» End Sub

Но есть метод проще.
Если выполнить ниже приведенную строчку кода, то пользователю невозможно будет изменить данные на листе(кроме тех, которые Вы сами разрешите), однако код VBA(макрос) сможет преспокойно вносить любые изменения, не снимая защиту.

Sub Protect_for_User_Non_for_VBA() ActiveSheet.Protect Password:=»1111″, UserInterfaceOnly:=True End Sub

Основную роль здесь играет параметр UserInterfaceOnly . Если его установить в True , то это говорит Excel-ю, что коды VBA могут выполнять действия по изменению ячеек, не снимая защиты методом Unprotect. Однако сама защита листа при этом не снимается и вручную изменить данные ячеек, не сняв защиту с листа, невозможно.
Код выше устанавливает такую защиту только на активный лист книги. Но можно указать лист явно(например установить защиту на лист с именем Лист1 в активной книге и лист, идущий вторым по порядку в книге( Sheets(2) )):

Sub Protect_for_User_Non_for_VBA() Sheets(2).Protect Password:=»1111″, UserInterfaceOnly:=True Sheets(«Лист1″).Protect Password:=»1111», UserInterfaceOnly:=True End Sub

Так же приведенный код можно еще чуть модернизировать и разрешить пользователю помимо изменения ячеек еще и использовать автофильтр:

Sub Protect_for_User_Non_for_VBA() Sheets(2).Protect Password:=»1111″, UserInterfaceOnly:=True ‘на лист «Лист1» поставим защиту и разрешим пользоваться фильтром Sheets(«Лист1″).Protect Password:=»1111», AllowFiltering:=True, UserInterfaceOnly:=True End Sub

Можно разрешить и другие действия(выделение незащищенных ячеек, выделение защищенных ячеек, форматирование ячеек, вставку строк, вставку столбцов и т.д. Чуть подробнее про доступные параметры можно узнать в статье Защита листов и ячеек в MS Excel). А как будет выглядеть строка кода с разрешенными параметрами можно узнать, записав макрорекордером установку защиты листа с нужными параметрами:

После этого получится строка вроде такой:

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowFiltering:=True

здесь я разрешил использовать автофильтр( AllowFiltering:=True ), вставлять строки( AllowInsertingRows:=True ) и столбцы( AllowInsertingColumns:=True ).Чтобы добавить возможность изменять данные ячеек только через код VBA, останется добавить параметр UserInterfaceOnly:=True:

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True

и так же неплохо бы добавить и пароль для снятия защиты, т.к. запись макрорекордером не записывает пароль:

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowFiltering:=True, UserInterfaceOnly:=True, Password:=»1111″

Этот метод всем хорош, все отлично, но. Параметр UserInterfaceOnly сбрасывается сразу после закрытия книги. Т.е. если установить таким образом защиту на лист и закрыть книгу, то при следующем открытии защиты этой уже не будет — останется лишь стандартная защита. Поэтому, если необходимо такую защиту видеть постоянно, то данный макрос лучше всего прописывать на событие открытия книги(модуль ЭтаКнига(ThisWorkbook)).
Сделать это можно таким кодом:

Private Sub Workbook_Open() Sheets(«Лист1″).Protect Password:=»1111», UserInterfaceOnly:=True End Sub

Этот код сработает только после того, как книга будет открыта. А это значит, чтобы увидеть результат необходимо после записи этого кода в ЭтаКнига сохранить книгу, закрыть её и открыть заново. Тогда в сам момент открытия книги код сработает и установит на «Лист1» правильную защиту.

Часто так же бывает необходимо устанавливать одинаковую защиту на все листы книги. Сделать это можно таким кодом, который так же должен быть размещен в модуле ЭтаКнига(ThisWorkbook):

Private Sub Workbook_Open() Dim wsSh As Object For Each wsSh In Me.Sheets Protect_for_User_Non_for_VBA wsSh Next wsSh End Sub Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet) wsSh.Protect Password:=»1111″, UserInterfaceOnly:=True End Sub

Плюс во избежание ошибок лучше перед установкой защиты снимать ранее установленную(если она была):

Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet) wsSh.Unrotect «1111» wsSh.Protect Password:=»1111″, UserInterfaceOnly:=True End Sub

Ну и если надо такую защиту установить только на конкретные листы, то убираем цикл и вызываем процедуру только для нужных листов. Если известны их имена, то можно прибегнуть к использованию массивов:

Private Sub Workbook_Open() Dim arr, sSh arr = Array(«Отчет», «База», «Бланк») For Each sSh in arr Protect_for_User_Non_for_VBA Me.Sheets(sSh) Next End Sub Sub Protect_for_User_Non_for_VBA(wsSh As Worksheet) wsSh.Protect Password:=»1111″, AllowFiltering:=True, UserInterfaceOnly:=True End Sub

Для применения в своих задачах в данном коде необходимо лишь изменить(добавить, удалить, вписать другие имена) имена листов в этой строке: Array(«Отчет», «База», «Бланк»)

Примечание: Метод защиты через UsefInterface всем хорош, но есть одно ограничение: метод невозможно использовать в книге с общим доступом(Рецензирование -Доступ к книге), т.к. при общем доступе существуют ограничения, среди которых и такое, которое запрещает изменять параметры защиты для книги в общем доступе.

Статья помогла? Поделись ссылкой с друзьями!

Источник

Excel макрос на защиту всех листов с паролем

Как автоматически защитить все рабочие листы при закрытии книги Excel?

Обычно вы можете вручную защитить лист или всю книгу паролем с помощью функции «Защитить лист» или «Защитить книгу» в Excel. Но если вы хотите автоматически защитить все рабочие листы паролем при закрытии книги, что вы можете сделать? Эта статья покажет вам метод VBA для этого.

Quickly Protect multiple/all worksheets with password at the same time in current workbook:

The Protect Worksheet utility of Kutools for Excel helps you easily protect multiple or all worksheets with password at the same time. See below screenshot:

  • Enable the Protect Worksheet utility
  • Check the worksheets you will protect at once
  • Specify password

Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download the free trial Now!

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

Чтобы автоматически защитить все листы при закрытии книги, примените следующий код VBA.

1. В книге, все листы которой вы хотите защитить при закрытии файла, нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окно, дважды щелкните значок Эта рабочая тетрадь на левой панели, а затем скопируйте ниже код VBA в окно кода. Смотрите скриншот:

Код VBA: защитить все листы при закрытии книги

Tips:

3. Затем нажмите другой + Q клавиши, чтобы закрыть окно Microsoft Visual Basic для приложений.

После вышеуказанного шага все рабочие листы или указанный рабочий лист будут автоматически защищены при закрытии книги.

Источник

Защита листа от изменений пользователями в Excel устанавливается разными способами, рассмотрим два варианта установки защиты листа, классический, при помощи стандартных средств Excel и менее распространенный — с помощью макроса.

Как установить защиту листа в Excel 2003

Для того чтобы установить защиту на лист, необходимо перейти в пункт меню Сервис/Защита/Защитить лист…

как защитить лист в excel 2003

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

Как установить защиту листа в Excel 2007

Кнопка «Защитить лист» расположена на вкладке «Рецензирование». Нажав её, Вы без труда установите защиту на активный лист стандартным способом.

как защитить лист в excel 2007

Для отключения защиты листа можно установить пароль.

Как установить защиту листа в Excel 2010

Защита листа в Excel 2010 осуществляется аналогично тому, как это делается в Excel 2007. Для этого необходимо перейти на вкладку «Рецензирование» и нажать на кнопку «Защитить лист».

как защитить лист в excel 2010

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

Как защитить лист паролем в Excel 2013

как установить защиту листа в excel 2013 

Для защиты листа в Excel 2013 необходимо перейти на вкладку «Рецензирование», как и в предыдущих версиях и в группе кнопок «Изменения» нажать кнопку «Защитить лист», отметить галочками разрешенные пользователям действия и при необходимости ввести пароль с последующим его подтверждением.

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

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

как установить защиту листа в excel 2016

Быстрая защита листов

Если в рабочей книге содержится несколько листов, то можно пройтись по каждому листу и на каждый установить защиту. Групповая защита листов в Excel не предусмотрена, только по одному. Ускорить этот процесс можно при помощи VBA-надстройки, которая устанавливается в Excel и добавляет к его стандартным возможностям дополнительный функционал. После установки надстройки на ленте Excel появляется дополнительная кнопка, при помощи которой можно вызвать диалоговое окно и выбрать нужный режим установки защиты.

Защита листов без пароля

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

Защита листов одним паролем

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

Защита листов отдельными случайными паролями

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

Выборочная защита листов паролями из файла

Если в рабочей книге Excel в столбце «A» написать имена листов, а в столбце «B» — пароли для защиты листов с соответствующими именами и сохранить эту книгу на жестком диске, то такой файл можно использовать для программной установки защиты. Если файл содержит более одного листа, то лист рабочей книги, содержащий имена и пароли должен быть активным при сохранении. В диалоговом окне программы выбирается соответствующая опция и при помощи кнопки обзора указывается файл с паролями. Этот вариант защиты можно использовать в случаях, когда необходимо установить пароли не на все листы, а выборочно.

Надстройка для быстрой установки защиты

как установить защиту на листы рабочей книгиCompleteSolutionмакрос (надстройка) для быстрой установки защиты на листы рабочей книги

Надстройка позволяет:

1. Быстро защитить листы рабочей книги без пароля (поле для ввода пароля должно оставаться пустым);

2. быстро установить защиту с использованием одного пароля;

3. защитить листы случайными паролями заданной длины (от 1 до 255 символов);

4. сохранить пароли в отдельный файл (файл сохраняется на жестком диске в папке с защищаемой рабочей книгой);

5. использовать для установки защиты пароли из файла (столбец «А» — имена листов, столбец «В» — пароли к ним);

6. выборочно защищать листы (в файле с именами и паролями указываются только те имена листов, которые необходимо запаролить);

7. устанавливать различные сочетания разрешенных действий для защищенных листов;

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

*имена листов указываются без пробелов, через точку с запятой «;»

также могут использоваться специальные символы совпадения * и ?

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

Видео по работе с надстройкой

Другие материалы по теме:

Понравилась статья? Поделить с друзьями:
  • Excel макрос на добавление ячейки
  • Excel макрос на добавление строки в таблицу
  • Excel макрос на добавление макроса
  • Excel макрос на выделение цветом ячеек
  • Excel макрос на вставку строки