Снять защиту книги макросом excel

Макрос предназначен для программного подбора и снятия защиты с листа 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
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   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.

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

Содержание

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

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

Этот макрос проходит цикл листов и использует аргумент пароль для снятия защиты листа.

Код макроса

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

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

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

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

Код макроса

Sub SnyatZaschituRaznieParoli()
Sheets("Лист1").UnProtect Password:="КРАСНЫЙ"
Sheets("Лист2").UnProtect Password:="СИНИЙ"
Sheets("Лист3").UnProtect Password:="ЖЕЛТЫЙ"
Sheets("Лист4").UnProtect Password:="ЗЕЛЕНЫЙ"
End Sub

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

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


security-excel

Краткое описание

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

Подробное описание

Иногда бывают ситуации, когда работая с тем или иным файлом Excel, мы устанавливаем защиту (пароль) на листы в файле или на саму книгу. Если пароль простой, используется для большинства документов или где-то записан, то разумеется, разблокировка не вызывает проблем. Но что делать, если запись о пароле утеряна, пароль устанавливался давно или мы не можем его вспомнить?

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

  1. на всех листах книги (если таковые были установлены)
  2. в самой книге (если включалась защита на файл excel)

Для использования макроса достаточно:

а) нажать кнопку «Снять защиту с файла» 

Запуск макроса Excel

б) в появившемся окне подтвердить, что пароль удаляется именно в вашем файле

Подтверждение Excel

в) после нажатия кнопки «OK», в диалоговом окне выбрать файл Excel, в котором требуется снять защиту

Выбор файла Excel

Результатом работы макроса будет новый файл (точная копия вашего указанного), но уже без пароля на листах и в книге. Сохраняется данный файл в папке с исходным (выбранным) вами файлом и в названии данного файла присутствует текст «NotProtectionFile». Как пример:

Результат работы макроса

Макрос успешно снимает защиту в файлах Excel с расширением xlsx и xlsm. Версия Excel (2007, 2010, 2013) значения не имеет. Данным макросом также успешно можно сбросить пароли с файлов xls и xlsb, если нужные файлы предварительно пересохранить в поддерживаемый макросом формат (xlsx/xlsm).

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

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

Понравилась статья? Поделить с друзьями:
  • Снять защиту книги excel онлайн
  • Снять защиту книги excel макрос
  • Снять защиту word online
  • Снять защите в excel 2010
  • Снять защита ячейки excel от изменения