Макрос предназначен для программного подбора и снятия защиты с листа 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 |
Перейти к содержимому
В данной статье описаны несколько способов разблокировки (снятия защиты, пароля) в запароленном файле «Эксель» и приведен макрос подбора пароля к файлу.
Категорически рекомендую использовать данные способы для разблокировки и снятия защиты только со своих собственных файлов, когда забыли (запамятовали) пароль и ни в коем случае не применять данные способы для взлома паролей защиты на чужих файлах не принадлежащих Вам.
Способ номер 1. Использование бесплатной офисной программы Open Office Calc
Это один из самых простых способов снятия забытого пароля с файла.
Что нужно делать:
- Скачать и установить бесплатную программу Open Office.
- Открыть запароленный файл в программе Open Office Calc.
- Перейти во вкладку «Сервис»
- Далее выбрать пункт «Защитить документ»
- Снять флажок (галочку) с пункта с названием защищенного листа.
Снять пароль в Open Office - Пароль с файла будет снят.
- Теперь остается только сохранить незапароленный файл и открыть его в «Excel», при необходимости.
Способ номер 2. Использование программы-архиватора для снятия пароля с листа «Excel»
Что нужно делать:
- Установить программу для открытия архивов и архивирования документов, если таковая не установлена на Вашем ПК. Например WinRar или 7Zip ;
7Zip man - Запустить программу архиватор ;
- Сохранить защищенный файл в формате .xlsx ;
Сохранить как xlsx - Открыть защищенный документ в этой программе, как архив ;
- Далее перейти в папку архива Название файла.xlsxxlworksheets ;
Снятие пароля через архив - Открыть интересующий вас лист для редактирования ;
- Найдите фрагмент кода начинающийся с «<sheetProtection password=» и заканчивающийся «/>». Удалите его ;
Удаление строки с паролем - Сохраните архив с измененным файлом ;
- Закройте программу-архиватор и откройте файл в «Excel» ;
- Защита листа снята.
Способ номер 3. Макрос VBA «Excel» для подбора пароля и снятия защиты листа.
Этот способ немного сложнее, так как от Вас потребуются хотя бы начальные знания в написании макросов «Excel».
Как пишется простейший макрос в «Excel» Вы можете посмотреть на странице сайта по ссылке:
Как написать простой макрос в программе Excel
Если вы знакомы с написанием макросов VBA , то для разблокировки файла защищенного паролем Вам следует выполнить следующие действия:
- Открыть редактор макросов во вкладке разработчик.
- Записать следующий код макроса:
- Sub podbor_ruexcel()
- Dim E1, E2, E3, E4, E5, E6, i, j, k, l, m, n As Integer
- Dim ruexcel As String
- Dim t!
- 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 E1 = 65 To 66
- For E2 = 65 To 66: For E3 = 65 To 66: For E4 = 65 To 66
- For E5 = 65 To 66: For E6 = 65 To 66
- ruexcel = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(E1) & Chr(E2) & Chr(E3) & Chr(E4) & Chr(E5) & Chr(E6)
- For n = 32 To 126
- Unprotect ruexcel & Chr(n)
- MsgBox «Пароль снят » & 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» будет снят.
Результат редактирования макроса:
Время от времени ко мне попадают файлы 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/
Время на прочтение
2 мин
Количество просмотров 17K
Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается путем экспортирования из программы ГрандСмета и содержит в себе смету, которая должна обрабатываться макросом.
На 32х разрядных версиях — отрабатывает без проблем.
На 64х столкнулся со следующей ошибкой:
Справка Microsoft дает однозначный ответ:
Связывался с Тех.Поддержкой, объяснял причину. Ответ был один:
У нас все работает. Проверяли на 64х разрядных версиях.
Тогда я решился самостоятельно править код макроса. Сложность, с которой столкнулся — модуль защищен паролем. О том, как сбросить/изменить пароль не используя специализированное ПО для взлома пароля
Итак, приступим. Заранее предупрежу — я не профессиональный программист, а скорее ЭниКейщик, так что возможны некорректные формулировки, а кому-то может и вовсе не понравиться выбранный мной путь.
Первым делом я стал бороздить просторы Сети в поисках решения. В основном полным-полно ссылок на ПО, из разряда PasswordCracker. Одно из решений опубликованное на Ru-Board’e полностью удаляло код модуля VBA.
В конце концов, мои старания вознаградились — предлагаю Вам вольный перевод найденного решения (к сожалению не могу указать первоисточник — не помню) + попытка понять суть выявленной «уязвимости».
Думаю, что ни для кого не секрет, что начиная с Excel 2007 использует Microsoft Office Open XML в качестве своего основного формата.
FarManager превосходно открывает xls файл с отображением всей структуры документа.
1. Запускаем FarManager.
2. Открываем файл для редактирования.
3. Ищем строку с определением ключа DPB, и изменяем имя ключа на DPW.
4. Сохраняем.
4. Открываем файл в Excel.
5. Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы сами и сделали некорректным в п.3):
6. В окнах с сообщениями об ошибке смело жмем ОК.
7. С помощью комбинации Alt+F11 — запускаем VBA Editor и, вуаля, код макроса доступен для редактирования.
Теперь причина возникавшей ошибки при запуске макроса в среде x64 — очевидна!
Компилятор подсказывает о том, что код в данном проекте должен быть обновлен для использования на 64х разрядных системах, конкретно указав, что надо было всего лишь добавить ключевое слово PtrSafe при объявлении функции.
Изменения внес, пересохранил, проверил. Все работает. Порадовал коллег решением наболевшей проблемы + приобрел опыт.
Пытаюсь решить последний вопрос, на котором я и застопорился:
Как вразумительно, и не обидев, объяснить Тех.Поддержке о решении возникшей проблемы с запуском макроса? Не должен же я самостоятельно перелапачивать все шаблоны (а их порядка 50), чтобы макрос корректно отрабатывал на x64 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.
Благодарен за внимание. Надеюсь, что для некоторой части сообщества информация была полезна.
P.S. Вдохновленный решением возникшей проблемы, и оставшись только с одним вопросом, который задал чуть выше, я решился создать свой первый топик на Хабре, в надежде на профессиональный дружеский совет.