Макрос предназначен для программного подбора и снятия защиты с листа 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 страницы которых защищены от изменений. Авторы таким способом пытаются защитить документ от внесения изменений. Если бы у вас был пароль, то вы могли поступить как на рисунке ниже.
Но эта статья для тех у кого пароля нет, а снять защиту с листа Excel очень надо.
Как снять защиту от редактирования с листа книги Excel с помощью офисного пакета программ OpenOffice
Это самый простой способ снятия защиты. Достаточно открыть файл Excel в редакторе таблиц OpenOffice Calc и снять галочку в меню «Сервис -> Защитить документ -> Лист». При этом не нужно вводить никаких паролей и т.д. Да, да — это всё!!! Осталось только сохранить разблокированный файл Excel.
Я так понимаю, что разработчики OpenOffice чихать хотели на защиту, которую придумали в компании MicroSoft. К слову сказать, подобные манипуляции с другим бесплатным пакетом LibreOffice желаемого результата не принесут. То есть при попытке разблокировки у вас запросят пароль, как и в случае использования оригинального MicroSoft Office.
Разблокировка данным способом проводилась с использованием OpenOffice версии 4.1.2 от 28 октября 2015
Как снять защиту от редактирования листа Excel с помощью макроса MicroSoft Office
Будем снимать защиту от редактирования с листов Excel с помощью самой же программы Excel. Для это воспользуемся встроенной поддержкой макросов.
Если у вас нет вкладки для разработчиков, то включите ее в настройках:
Затем выбираем пункт «Макросы» на вкладке для разработчиков:
Вводим название нашего макроса и нажимаем кнопку «Создать»:
В появившемся окне
вставляем следующий код:
Dim t! Dim i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n As Long Dim i1 As Integer, i2 As Integer, i3 As Integer Dim i4 As Integer, i5 As Integer, i6 As Integer Dim kennwort As String t = Timer On Error GoTo err_ 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 kennwort = 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 ActiveSheet.Unprotect kennwort & Chr(n) MsgBox "Done in " & Format(Timer - t, "0.0 sec") Exit Sub nxt_: Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next Exit Sub err_: Resume nxt_ End Sub
У вас должно получиться примерно так:
Закрываем главное окно:
снова нажимаем на вкладке для разработчиков кнопку «Макросы»
и в появившемся окне нажимаем кнопку «Выполнить»
Через некоторое время вы получите уведомление, что все готово:
Осталось только сохранить файл. При этом Excel спросит вас сохранять ли макрос:
Разблокировка данным способом проводилась с помощью MicroSoft Office Excel 2010.
Разблокировка с помощью архиватора и текстового редактора
Это способ для тех, кто хочет знать как защита от редактирования устроена изнутри.
Измените расширение файла XLSX на ZIP.
Если у вас файл в формате XLS, то в начале, чтобы воспользоваться этим способом, сохраните его в XLSX.
Откройте файл в архиваторе, я буду использовать бесплатный BandZip.
Распакуйте необходимый лист из книги Excel используя путь в архиве «xl -> worksheets».
Откройте полученный файл, к примеру sheet1.xml в любом текстовом редакторе, можно даже в блокноте.
Найдите в тексте секцию <sheetProtection password= и удалите её полностью до закрывающей скобки. Сохраните изменения и переместите файл обратно в архив.
Измените расширение архива на XLSX. Теперь вы можете свободно редактировать этот файл в MicroSoft Office Excel. Если листов с защитой от редактирования в книге Excel много, по описанную процедуру нужно проделать с каждым из них.
Выводы о защите от редактирования листов книги Excel
Защита слабенькая. Обходится просто. Я проверил все три способа, все они рабочие. На мой взгляд самый удобный — это использовать OpenOffice. Правда у него есть особенность, Open Office не умеет сохранять файлы в формате XLSX, только в более старом формате XLS.
Благодарности
При написании статьи были использованы следующие источники:
- http://dplanet.info/kak-snyat-zashhitu-lista-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 MsgBox ("Пароль: " & 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 |
Краткое описание
Макрос позволяет легко и быстро восстановить доступ к листам или книге Excel. Просто нажмите кнопку, выберите нужный файл и макрос создаст копию указанного файла, но уже без установленного ранее пароля.
Подробное описание
Иногда бывают ситуации, когда работая с тем или иным файлом Excel, мы устанавливаем защиту (пароль) на листы в файле или на саму книгу. Если пароль простой, используется для большинства документов или где-то записан, то разумеется, разблокировка не вызывает проблем. Но что делать, если запись о пароле утеряна, пароль устанавливался давно или мы не можем его вспомнить?
В данном случае предлагаем воспользоваться не сложным макросом, который легко и быстро удалит установленные пароли в вашем файле. Пароли удаляются:
- на всех листах книги (если таковые были установлены)
- в самой книге (если включалась защита на файл excel)
Для использования макроса достаточно:
а) нажать кнопку «Снять защиту с файла»
б) в появившемся окне подтвердить, что пароль удаляется именно в вашем файле
в) после нажатия кнопки «OK», в диалоговом окне выбрать файл Excel, в котором требуется снять защиту
Результатом работы макроса будет новый файл (точная копия вашего указанного), но уже без пароля на листах и в книге. Сохраняется данный файл в папке с исходным (выбранным) вами файлом и в названии данного файла присутствует текст «NotProtectionFile». Как пример:
Макрос успешно снимает защиту в файлах Excel с расширением xlsx и xlsm. Версия Excel (2007, 2010, 2013) значения не имеет. Данным макросом также успешно можно сбросить пароли с файлов xls и xlsb, если нужные файлы предварительно пересохранить в поддерживаемый макросом формат (xlsx/xlsm).
Как видите, ничего сложного. Защита документов в Excel — это по большому счету миф, который работает только на неподготовленных пользователей. Поэтому, если вы разрабатываете какие-либо отчеты, ведете файлы с конфиденциальной информацией и передаете сформированные документы третьим лицам, блокируя некоторый доступ паролем, то обязательно учитывайте данный факт.
И еще раз напоминаем. Восстановление собственных паролей — это легальная операция. Взлом паролей чужих файлов без явного согласия их владельца запрещен.