Макрос предназначен для программного подбора и снятия защиты с листа Excel.
Подобранный пароль не совпадает с установленным — но, тем не менее, защита снимается.
Sub Unlock_Excel_Worksheet() t = Timer If UnlockSheet(ActiveSheet) Then MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.") Else MsgBox "Не удалось снять защиту листа", vbCritical End If End Sub
Function UnlockSheet(ByRef sh As Worksheet) As Boolean Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$ On Error Resume Next For i = 65 To 66: For j = 65 To 66: For k = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66 txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) For n = 32 To 126 sh.Unprotect txt$ & Chr(n) If Err Then Err.Clear Else Debug.Print "Пароль: " & txt$ & Chr(n) UnlockSheet = True Exit Function End If Next Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next End Function
Аналогичный макрос снимает защиту книги Excel:
Sub Unlock_Excel_Workbook() ' снятие защиты книги Excel t = Timer If UnlockWorkbook(ActiveWorkbook) Then MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.") Else MsgBox "Не удалось снять защиту книги", vbCritical End If End Sub
Function UnlockWorkbook(ByRef wb As Workbook) As Boolean Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$ On Error Resume Next For i = 65 To 66: For j = 65 To 66: For k = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66 txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) For n = 32 To 126 wb.Unprotect txt$ & Chr(n) If Err Then Err.Clear Else Debug.Print "Пароль: " & txt$ & Chr(n) UnlockWorkbook = True Exit Function End If Next Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next End Function
ТРЕНИНГИ
Быстрый старт
Расширенный Excel
Мастер Формул
Прогнозирование
Визуализация
Макросы на VBA
КНИГИ
Готовые решения
Мастер Формул
Скульптор данных
ВИДЕОУРОКИ
Бизнес-анализ
Выпадающие списки
Даты и время
Диаграммы
Диапазоны
Дубликаты
Защита данных
Интернет, email
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Макрос снятия защиты книги
Sub Unlock_Excel_Workbook() ' снятие защиты книги Excel t = Timer If UnlockWorkbook(ActiveWorkbook) Then MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.") Else MsgBox "Не удалось снять защиту книги", vbCritical End If End Sub Function UnlockWorkbook(ByRef wb As Workbook) As Boolean Dim i%, j%, K%, l%, m%, N As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$ On Error Resume Next For i = 65 To 66: For j = 65 To 66: For K = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66 txt$ = Chr(i) & Chr(j) & Chr(K) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) For N = 32 To 126 wb.Unprotect txt$ & Chr(N) If Err Then Err.Clear Else MsgBox ("Пароль: " & txt$ & Chr(N)) UnlockWorkbook = True Exit Function End If Next Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next End Function
Skip to content
Как снять защиту со всех листов
На чтение 2 мин. Просмотров 5.3k.
Что делает макрос: Бывает необходимость снять защиту со всех листов, обычно это делается вручную. Данный макрос автоматизирует это.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Код макроса
- Как использовать
Как макрос работает
Этот макрос проходит цикл листов и использует аргумент пароль для снятия защиты листа.
Код макроса
Sub SnyatZaschituOdinParol() 'Шаг 1: Объявляем переменные Dim ws As Worksheet 'Шаг 2: Запускаем цикл через все рабочие листы For Each ws In ActiveWorkbook.Worksheets 'Шаг 3: Цикл до следующего рабочего листа ws.UnProtect Password:="КРАСНЫЙ" Next ws End Sub
Как этот код работает
- Шаг 1 объявляет объект под названием WS. Это создает контейнер памяти для каждого рабочего листа.
- Шаг 2 запускается цикл через все рабочие листы в этой книге.
- Шаг 3 снимает защиту активного листа, обеспечивая пароль по мере необходимости, а затем возвращается обратно, чтобы получить рабочий лист.
Очевидно, что макрос будет работать, если все рабочие листы, которые должны быть незащищенными имеют один и тот же пароль. Если это не так, то вам нужно явно снять защиту каждый лист с соответствующим паролем.
Код макроса
Sub SnyatZaschituRaznieParoli() Sheets("Лист1").UnProtect Password:="КРАСНЫЙ" Sheets("Лист2").UnProtect Password:="СИНИЙ" Sheets("Лист3").UnProtect Password:="ЖЕЛТЫЙ" Sheets("Лист4").UnProtect Password:="ЗЕЛЕНЫЙ" End Sub
Как использовать
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши personal.xlb в окне Project.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Краткое описание
Макрос позволяет легко и быстро восстановить доступ к листам или книге Excel. Просто нажмите кнопку, выберите нужный файл и макрос создаст копию указанного файла, но уже без установленного ранее пароля.
Подробное описание
Иногда бывают ситуации, когда работая с тем или иным файлом Excel, мы устанавливаем защиту (пароль) на листы в файле или на саму книгу. Если пароль простой, используется для большинства документов или где-то записан, то разумеется, разблокировка не вызывает проблем. Но что делать, если запись о пароле утеряна, пароль устанавливался давно или мы не можем его вспомнить?
В данном случае предлагаем воспользоваться не сложным макросом, который легко и быстро удалит установленные пароли в вашем файле. Пароли удаляются:
- на всех листах книги (если таковые были установлены)
- в самой книге (если включалась защита на файл excel)
Для использования макроса достаточно:
а) нажать кнопку «Снять защиту с файла»
б) в появившемся окне подтвердить, что пароль удаляется именно в вашем файле
в) после нажатия кнопки «OK», в диалоговом окне выбрать файл Excel, в котором требуется снять защиту
Результатом работы макроса будет новый файл (точная копия вашего указанного), но уже без пароля на листах и в книге. Сохраняется данный файл в папке с исходным (выбранным) вами файлом и в названии данного файла присутствует текст «NotProtectionFile». Как пример:
Макрос успешно снимает защиту в файлах Excel с расширением xlsx и xlsm. Версия Excel (2007, 2010, 2013) значения не имеет. Данным макросом также успешно можно сбросить пароли с файлов xls и xlsb, если нужные файлы предварительно пересохранить в поддерживаемый макросом формат (xlsx/xlsm).
Как видите, ничего сложного. Защита документов в Excel — это по большому счету миф, который работает только на неподготовленных пользователей. Поэтому, если вы разрабатываете какие-либо отчеты, ведете файлы с конфиденциальной информацией и передаете сформированные документы третьим лицам, блокируя некоторый доступ паролем, то обязательно учитывайте данный факт.
И еще раз напоминаем. Восстановление собственных паролей — это легальная операция. Взлом паролей чужих файлов без явного согласия их владельца запрещен.