Надстройка для excel снять пароль

В надстройке реализовано два инструмента по снятию паролей с листов и структуры книги Excel

  • “Снять пароли” – удаляет пароли перебором комбинаций паролей. Данный инструмент не может снять пароли в книгах Excel созданных в версия старше 2013 включительно.
  • “Снять пароли XML” – производит редактирование XML разметки, содержащей зашифрованный пароль. Удаляет пароли со всех версий Excel.

“Снять пароли” – открывается диалоговое окно показывающее защищенные паролем элементы книги Excel

удалить пароли VBA и книге и листов Excel remove pasvord

Удаление пароля в книге Excel

По умолчанию в диалоговом окне, выбраны все защищенные паролем объекты книги Excel

При клике по кнопке “Подобрать пароль” – пароли по выбранным объектам будут удалены

Удаление паролей с листов и структуры книги Excel

Удаление паролей с листов и структуры книги Excel

“Снять пароли XML” – открывается диалоговое окно выбора файлов для снятия паролей.

После выбора файлов, в активной книге будет создан отчет о снятых паролях в книгах Excel

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

Удаление паролей с листов и структуры книги Excel

Отчет об удаление паролей с листов и структуры книги 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. Вдохновленный решением возникшей проблемы, и оставшись только с одним вопросом, который задал чуть выше, я решился создать свой первый топик на Хабре, в надежде на профессиональный дружеский совет.

Как сбросить пароль в модуле VBA Excel

Как сбросить парольную защиту (пароль) модуля VBA в Excel 2010

Макросы и надстройки существенно расширяют функционал пакета Microsoft
Office путем добавления новых возможностей, автоматизации рутинных задач и
т.д.

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

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

Рассмотрим как достаточно просто сбросить пароль в модуле VBA в таком случае. Для работы будет
необходим Far менеджер, скачать с официального сайта можно по
ссылке.
Желательно сделать резервную копию файла.

Имеется файл с расширением .xlsm – надстройка Excel 2010, в нем макрос на
VBA, защищенный паролем.

Меняем расширение файла на .zip, игнорируя предупреждающее сообщение:

Вот так должно получится:

Запускаем FarManager, ищем наш файл, заходим внутрь архива по Enter,
находим файл vbaProject.bin, нажимаем F4. Видим что-то подобное:

Ищем строку с определением ключа DPB. По клавише F7,
вводим «DPB» и жмем Enter. Изменяем имя ключа на DPW.

Сохраняем файл по F2, выходим по Esc. На вопрос о сохранении файла в архиве
жмем Ok

Переименовываем файл обратно в .xlsm и открываем.

Подтверждаем загрузку проекта, не смотря на некорректный ключ (который мы
сами и сделали некорректным):

В окнах с сообщениями об ошибке смело жмем ОК.

Запускается VBA Editor и код макроса доступен для редактирования!

Чтобы убрать ругань при открытии проекта, нужно или совсем сбросить пароль
или установить свой. Делается это через меню Tools
Project Properties
.

В открывшемся окне перейти на закладку Protection.

Чтобы сбросить пароль, нужно убрать галочку из окна Lock project for viewing.
Чтобы задать свой пароль, введите его и подтвердите в полях ниже это же окна.

Яндекс.Метрика

Версия от 24.10.2021

Операционная система: Windows

Microsoft Office 2007/2010/2013/2016/2019/365

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

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

* вид диалогового окна на видео может отличаться от вида диалогового окна в надстройке последней версии.

Для работы с надстройкой необходимо:

1. Скачать файл, который станет доступен для скачивания сразу после оплаты (порядок оплаты);

2. Установить надстройку, следуя пошаговой инструкции по установке для различных версий Excel;

3. Нажать кнопку вызова диалогового окна на вкладке «Надстройки»;

snyatie zashchity listov

4. Выбрать режим снятия защиты, вписать пароль в текстовое поле диалогового окна либо указать путь к файлу, содержащему имена листов в столбце «А» и пароли для снятия защиты этих листов в столбце «В»;

выборочное снятие защиты листов

5. запустить программу.

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

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

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

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

4. выборочно снимать защиту только с тех листов, имена и пароли к которым записаны в отдельном файле, в столбцах «А» и «В» соответственно.

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

Макрос предназначен для программного подбора и снятия защиты с листа 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 перечень
  • Надстройка для excel пакет анализа
  • Надстройка для excel объединение таблиц