Как снять пароль vba с файла excel

Установка пароля на VBA-проект и снятие защиты с него. Отключение забытого пароля с проекта VBA, созданного в книге Excel с расширением .xlsm.

Защита проекта VBA паролем помогает от случайного или намеренного изменения кода обычным пользователем. От злоумышленников простая установка пароля не спасет.

Защита проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и установите галочку в чек-боксе «Lock project for viewing».
  3. Введите пароль в поле «Password» и повторите пароль в поле «Confirm password».

Окно «VBAProject - Project Properties»

  1. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет защищен.

Снятие защиты с VBA-проекта

Снятие защиты с проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и уберите галочку из чек-бокса «Lock project for viewing».
  3. Очистите поля «Password» и «Confirm password».
  4. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет доступен.

Отключение забытого пароля

Этот способ отключения забытого пароля применим к файлам Excel с расширением .xlsm. Чтобы не забывать пароли, используйте менеджер KeePass.

  1. Сделайте копию книги Excel, чтобы случайно не потерять ее при вмешательстве в код.
  2. Откройте файл .xlsm любым архиватором (я использую бесплатный 7-Zip). Иногда рекомендуют заменить расширение .xlsm на .zip или добавить одно к другому (.xlsm.zip), но делать этого совершенно не обязательно.

  1. Откройте в архиве папку «xl», найдите файл «vbaProject.bin» и перетащите его в папку с книгой Excel (по умолчанию происходит копирование).

  1. Откройте файл «vbaProject.bin» программой «Notepad++», обычный блокнот не подойдет.
  2. С помощью поиска (Ctrl+F) найдите фразу DPB=, замените в ней букву «B» на любую другую, например на «z» и сохраните файл.

  1. Перетащите файл «vbaProject.bin» обратно в архив, подтвердив копирование. Архив можно закрыть.
  2. Откройте книгу Excel и на запрос о продолжении загрузки с невалидным ключом «DPz» ответьте «Да».

  1. Откройте редактор VBA, дважды или трижды нажав «OK» в сообщении о неизвестной ошибке (у меня такое предупреждение появляется трижды).

  1. Сохраните книгу Excel и закройте.
  2. Откройте файл Excel, перейдите в редактор VBA, откройте окно «VBAProject — Project Properties» («Tools» >> «VBAProject Properties») и убедитесь, что галочка у чек-бокса «Lock project for viewing» снята, поля «Password» и «Confirm password» — пустые.

How can I programmatically remove a (known) password from an Excel VBA project?

To be clear: I want to remove the password from the VBA Project, not the workbook or any worksheets.

braX's user avatar

braX

11.5k5 gold badges20 silver badges33 bronze badges

asked Nov 7, 2008 at 15:48

Barry-Jon's user avatar

5

Another way to remove VBA project password is;

  • Open xls file with a hex editor.
    (ie. Hex Edit http://www.hexedit.com/)
  • Search for DPB
  • Replace DPB to DPx
  • Save file.
  • Open file in Excel.
  • Click «Yes» if you get any message box.
  • Set new password from VBA Project Properties.
  • Close and open again file, then type your new password to unprotect.

UPDATE: For Excel 2010 (Works for MS Office Pro Plus 2010 [14.0.6023.1000 64bit]),

  • Open the XLSX file with 7zip

If workbook is protected:

  • Browse the folder xl
  • If the workbook is protected, right click workbook.xml and select Edit
  • Find the portion <workbookProtection workbookPassword="XXXX" lockStructure="1"/> (XXXX is your encrypted password)
  • Remove XXXX part. (ie. <workbookProtection workbookPassword="" lockStructure="1"/>)
  • Save the file.
  • When 7zip asks you to update the archive, say Yes.
  • Close 7zip and re-open your XLSX.
  • Click Protect Workbook on Review tab.
  • Optional: Save your file.

If worksheets are protected:

  • Browse to xl/worksheets/ folder.
  • Right click the Sheet1.xml, sheet2.xml, etc and select Edit.
  • Find the portion <sheetProtection password="XXXX" sheet="1" objects="1" scenarios="1" />
  • Remove the encrypted password (ie. <sheetProtection password="" sheet="1" objects="1" scenarios="1" />)
  • Save the file.
  • When 7zip asks you to update the archive, say Yes.
  • Close 7zip and re-open your XLSX.
  • Click Unprotect Sheet on Review tab.
  • Optional: Save your file.

answered Oct 20, 2011 at 12:23

Uygar Y's user avatar

Uygar YUygar Y

1,9621 gold badge12 silver badges16 bronze badges

11

I found another way to solve this one to avoid password of VBA Project, without losing password.

If the file type is XLSM files:

  1. Rename the .xlsm as .zip (or you can open the .xlsm with 7zip/WinRAR) and open/extract it
  2. Edit the xl/vbaProject.bin file with Notepad++ or HexEdit
  3. Search for DPB= and replace it with DPx=

enter image description here

  1. Save the file
  2. Copy this file back into the .zip (or zip the files back up)
  3. Rename the archive back to .xlsm
  4. Open the file in Excel, if prompted to «Continue Loading Project», click Yes. If prompted with errors, click OK. Note: the code may still be blank or corrupted, which we fix in the next step
  5. Save the file as a new .xlsm file
  6. Open the new file in Excel (should be no errors now)
  7. Press Alt+ F11 to open the VBA editor

or

Follow this Step Also

I found another way to solve this one to avoid password of VBA Project, without losing excel password.
use Hex-editor XVI32 for the process

if the file type is XLSM files:

  1. Open the XLSM file with 7-Zip (right click -> 7-Zip -> Open archive). 2. Copy the xl/vbaProject.bin file out of the file (you can drag and drop from 7-Zip), don’t close 7-Zip

  2. Open the vbaProject.bin file with HexEdit

  3. Search for «DPB=» and replace it with «DPx=»

  4. Save the file

  5. Copy this file back into 7-Zip (again, drag and drop works)

  6. Open the XLSX file in Excel, if prompted to «Continue Loading Project», click Yes. If prompted with errors, click OK. 8. Press Alt+ F11 to open the VBA editor.

  7. While press it will show error “Unexpected error (40230)”, just click OK (6 or 7 times) until it goes away.

  8. Then it will open Automatically

answered Jan 24, 2018 at 6:15

Thomas's user avatar

ThomasThomas

1,42514 silver badges30 bronze badges

3

This has a simple method using SendKeys to unprotect the VBA project. This would get you into the project, so you’d have to continue on using SendKeys to figure out a way to remove the password protection:
http://www.pcreview.co.uk/forums/thread-989191.php

And here’s one that uses a more advanced, somewhat more reliable method for unprotecting. Again, it will only unlock the VB project for you.
http://www.ozgrid.com/forum/showthread.php?t=13006&page=2

I haven’t tried either method, but this may save you some time if it’s what you need to do…

answered Nov 7, 2008 at 16:44

Jon Fournier's user avatar

Jon FournierJon Fournier

4,2493 gold badges32 silver badges43 bronze badges

3

My 2 cents on Excel 2016:

  1. open the xls file with Notepad++
  2. Search for DPB= and replace it with DPx=
  3. Save the file
  4. Open the file, open the VB Editor, open modules will not work (error 40230)
  5. Save the file as xlsm
  6. It works

answered Aug 25, 2020 at 14:47

Timo's user avatar

TimoTimo

2,8463 gold badges29 silver badges27 bronze badges

I found this here that describes how to set the VBA Project Password. You should be able to modify it to unset the VBA Project Password.

This one does not use SendKeys.

Let me know if this helps!
JFV

answered Nov 7, 2008 at 16:40

JFV's user avatar

JFVJFV

1,8036 gold badges24 silver badges36 bronze badges

After opening xlsm file with 7 zip, extracting vbaproject.bin and in Notepad ++ replacing DpB with DPx and re-saving I got a Lot of vbaproject errors and vba project password was gone but no code/forms.

I right clicked to export and was able to re-import to a new project.

geisterfurz007's user avatar

answered Sep 12, 2019 at 11:35

Aveesh's user avatar

AveeshAveesh

651 gold badge2 silver badges6 bronze badges

1

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

Хитрости »

4 Май 2011              81901 просмотров


Большинство наверняка знает как установить/снять пароль с VBA проекта вручную:

  1. ToolsVBAProject Properties-вкладка Protection;
  2. для защиты устанавливается галочка «Lock project for viewing«; для разблокировки — снимается;
  3. вписывается/удаляется сам пароль в полях Password и Confirm password.

Предположу, что не очень многим может понадобиться снимать пароль с проекта VBA средствами самого VBA. Но все же данная тема имеет спрос, как я смог убедиться, общаясь на форумах. Прежде всего это может пригодиться тем, кто создает свои приложения на VBA и периодически нужно вносить изменения в уже созданные проекты(например копирование модулей и кодов из одного проекта в другой). Сразу оговорюсь: я не рассматриваю ситуации, когда вам неизвестен пароль к проекту. Предполагается, что вы знаете пароль и можете снять его вручную.

Я лично знаю два способа снять пароль программно: через метод SendKeys и использовании функций API. Т.к. второй способ довольно громоздкий и сложный для понимания — я в данной статье опишу лишь первый способ. Он не содежит каких-либо изысков и довольно прост.

Sub Unprotect_VBA()
    Dim objVBProject As Object, objVBComponent As Object, objWindow As Object
 
    Workbooks.Open "C:1.xls"
    Set objVBProject = ActiveWorkbook.VBProject
    'просматриваем все окна проекта в поисках окна снятия защиты
    For Each objWindow In objVBProject.VBE.Windows
        ' Type = 6 - это нужное нам окно
        If objWindow.Type = 6 Then
            objWindow.Visible = True
            objWindow.SetFocus: Exit For
        End If
    Next
    'вводим пароль и подтверждаем ввод
    SendKeys "~1234~", True: SendKeys "{ENTER}", True
    'здесь Ваш код по внесению изменений в проект
    Set objVBProject = Nothing: Set objVBComponent = Nothing: Set objWindow = Nothing
    ActiveWorkbook.Close True
End Sub

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

«C:1.xls» — полный путь к книге, включая расширение файла.

«~1234~» — пароль к проекту. Тильды нужны, но они не являются частью кода. Т.е. сам код это — 1234.

Способ, как видите, действительно очень прост, но это порождает и недостатки. Главный недостаток: снятие пароля данным методом весьма нестабильно и иногда может не срабатывать. Так же во время работы данного кода крайне нежелательно пользоваться мышью и клавиатурой. Точнее даже не нежелательно, а просто нельзя, если вам необходим положительный результат.

Также см.:
[[Копирование модулей и форм из одной книги в другую]]
[[Как удалить макросы в книге?]]
[[Как добавить код процедуры программно, скопировать модуль]]
[[Защита листов/снятие защиты]]


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Можно ли взломать мой проект Excel VBA, если код защищен утерянным или забытым паролем? И если да, то как это можно сделать? Ответ положительный. Взлом пароля Excel VBA — не сложная задача, если у вас есть подходящие инструменты. Фактически, если у вас есть правильный инструмент и методология, взломать даже сложные пароли будет довольно легко.

В этой статье мы покажем вам, как взломать пароли VBA, используя несколько простых методов. Но сначала давайте посмотрим, что такое пароль VBA в Excel.

Пароль VBA — как это работает?

VBA (Visual Basic для приложений) — это язык программирования, используемый для создания приложений Microsoft Office, таких как Excel и О компании более мощный и простой в использовании. VBA также используется для создания пользовательских приложений.

A Проект VBA можно защитить паролем для предотвращения несанкционированного доступа. Когда вы открываете проект VBA в электронной таблице Excel, вам может быть предложено ввести пароль (как показано на рисунке ниже). Если вы не введете правильный пароль, вы не сможете просматривать или редактировать код VBA.

Необходимо указать пароль для просмотра кода VBA

Как взломать пароль Excel VBA

Есть несколько различных методов, которые можно использовать для взлома пароля Excel VBA. Мы подробно рассмотрим каждый из этих методов ниже.

Метод 1: использование Сброс пароля VBA

«VBA Password Reset a» — это мощный плагин для восстановления пароля Excel, который может быстро сбросить пароль на «a» из большинства проектов VBA. Этот инструмент совместим с Excel 2007 и более поздними версиями на компьютере с Windows, а также с Excel 2016 и более поздними версиями на Mac.

Excel Сброс пароля VBA После установки и включения надстройка будет доступна с ленты Excel. Чтобы удалить пароль макроса в Excel, нужно всего два действия.

Шаг 1. Откройте файл книги с запросом пароля — нажмите «Сбросить пароль VBA — a».

Включить сброс пароля VBA - a в Excel

Шаг 2. Выберите вариант сброса пароля — здесь мы можем выбрать в меню «Снять защиту со всех листов в активной книге».

Выберите Снять защиту со всех листов в активной книге в VBA. Сброс пароля.

Вам будет предоставлена ​​копия файла Excel в том же месте, где он был изначально создан, и с паролем VBA «a».

Метод 2: использование Средство удаления паролей SysTools VBA

SysTools представила приложение Windows под названием «SysTools VBA Password Remover» для Excel 97 и более поздних версий. Эта программа легко взломает пароли VBA в книгах Excel без каких-либо технических знаний.

Шаг 1. Нажмите кнопку ниже и загрузите эту программу.

Бесплатная загрузка

Шаг 2. После того, как вы запустили программу, вы увидите страницу с заголовком «Проверить наличие предварительных условий», на которой нам нужно нажать «ОК», чтобы продолжить.

SysTools VBA Password Remover Страница проверки предварительных требований

Шаг 3. Выберите книгу Excel с зашифрованным содержимым с помощью кнопки «Добавить файл (ы)». Затем нажмите «Сброс», чтобы разблокировать все коды VBA.

Добавить файл, защищенный паролем VBA, в SysTools VBA Password Remover

Шаг 4. Теперь вы можете видеть, что для этого файла был установлен новый пароль, а статус показывает «Пройдено», что означает, что это будет пароль для доступа к вашему проекту VBA.

Пароль VBA был сброшен с помощью SysTools VBA Password Remover

Метод 3: изменить расширение + шестнадцатеричный редактор

Чтобы сбросить или удалить пароль из книги Excel с помощью Hex Editor, нам сначала нужно создать резервную копию файла, который был защищен паролем VBA. После того, как вы создали резервную копию файла, выполните следующие действия:

Шаг 1. Измените расширение файла Excel с «xlsm» на «zip». Это сделает файл похожим на ZIP-архив.

Измените расширение файла Excel VBA с XLSM на ZIP

Для многих людей флажок «Скрыть расширения для известных типов файлов» в параметрах папки установлен по умолчанию. Если снять этот флажок, расширения будут отображаться в проводнике.

Снимите флажок "Скрыть расширения для известных типов файлов" в параметрах папок Windows.

Шаг 2. Извлеките ZIP-файл с помощью такого инструмента, как WinZip или 7-Zip.

Шаг 3. Откройте распакованную папку. Внутри этого есть подпапка «xl», в которой вы можете найти файл «vbaProject.bin».

Найдите файл vbaProject.bin в папке xl

Шаг 4. Откройте файл «vbaProject.bin» с помощью шестнадцатеричного редактора, например HxD.

Шаг 5. Найдите в файле «DPB».

Откройте vbaProject.bin и найдите DPB в HxD Hex Editor

Шаг 6. Теперь измените «DPB» на «DPx». Сохраните изменения и выйдите.

Только «B» следует заменить на «x», и не удаляйте знак равенства по ошибке.

Измените DPB на DPx с помощью HxD Hex Editor

Шаг 7. Сожмите все папки и файлы в ZIP-архив.

Сжатие измененных папок и файлов XLSM в ZIP-файл

Шаг 8. Измените расширение с «zip» на «xlsm», а затем откройте его.

Изменить расширение с ZIP на XLSM

Шаг 9. Итак, вы находитесь в файле xlsm. Первое, что может произойти, — это выскакивать много ошибок, но не волнуйтесь: просто нажмите «Да», чтобы закрыть их.

Откройте редактор VB, щелкнув «Разработчик», затем «Visual Basic». Затем в разделе «Инструменты»> «Свойства VBAProject» снимите флажок «Заблокировать проект для просмотра».

Снимите флажок «Заблокировать проект для просмотра» для просмотра взломанного кода VBA.

Шаг 10. Закройте редактор и сохраните файл Excel. Возможно, вам будет предложено сохранить в другом месте как новый файл.

Шаг 11. Откройте новый файл. Теперь ваш код VBA будет виден без ввода пароля!

* Мы протестировали этот метод на файле Excel 2007.

Заключение

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

В этой статье мы рассмотрели три способа получить доступ к своему проекту VBA без пароля. Если вы хотите использовать надстройка или скачать программа для удаления паролей от SysTools, это не займет много времени, прежде чем ваш файл снова откроется и станет доступен для редактирования.

Stuck with an Excel VBA document that’s locked with a password? We’ll show you how to remove the password protection to recover the contents of the VBA macro.

Stuck with a VBA document that’s password protected? Here’s how to pick the lock.

It’s not unusual to take ownership of someone else’s Excel document, especially in the workplace. Usually, the transition goes smoothly — but there are pitfalls that can cause some real headaches.

For instance, six months down the line you might try edit one of the VBA macros that’s integral to the spreadsheet, only to find that it’s password protected. What happens now? Well, with a bit of tinkering behind the scenes, it’s not too difficult to remove that protection entirely.

Here’s how to eliminate password protection from a VBA document in Excel. It might just make you think twice about how secure your spreadsheets really are.

How to Set Up a Password

If you need to crack a password, you may already be aware how to set one up. However, it’s still worth laying out how this kind of protection works.

Head to the Developer tab in Excel and click Macros.

excel macros

In case you don’t see the Developer tab, go to File > Options and then Customize Ribbon. Now move the Developer command group from the left pane over to the right.

excel vba

Once you selected Macros in the Developer tab, enter a name for your macro (it’s just an example, so the specifics don’t matter) and then click Create.

protected excel macro

Copy and paste the following code into the Visual Basic Editor. This is a simple macro that will enter the quoted text into cell A1. It serves no real purpose, but we need something to protect with a password.

  Range("A1").Value = "Password Protected" 

You should end up with something that looks like this.

excel password code

In the Visual Basic Editor, navigate to Tools > VBAProject Properties.

vba project properties

Head to the Protection tab and you’ll be able to set a password. You’ll also need to check the box labeled Lock project for viewing.

excel password properties

Click OK, make sure to save your Excel document as an XLSM file, and we can test out whether our password works. Close your document and reopen it, then head to the Developer tab and click Visual Basic.

excel password prompt

When you try to access the relevant VBAProject, you’ll see a password prompt. Now we can figure out how to remove this kind of protection.

How to Remove a Password

Now for the difficult part, although it’s really quite straightforward once you know what you’re doing. First, we’re going to need to download a hex editor. If you don’t have one already, HxD is a good free option, but there are plenty of alternatives available.

Our process differs slightly depending on whether we’re cracking a password in an older XLS file or a newer XLSM file. If you’re working with the former, feel free to skip the next section.

Preparing Our XLSM File

We need to perform a little extra preparatory work to remove a password from an XLSM file. Find it on your hard drive, then rename it, adding .zip onto the end.

Next, open it with archive compression software like WinRAR or 7-Zip. You should find a folder labelled xl.

excel xl folder

Inside this folder, you’re looking for a file with the name vbaProject.bin.

vba project properties

Extract this file and open it with your Hex Editor.

Disabling the Password

Here’s where being able to set up a password comes in handy. Create a dummy Excel document, add a macro into it, and set a password as described at the beginning of this article. Next, we’re going to take the Hex code that stipulates what the password is, and we’ll insert it into the file we want to access.

Once you have that file set up, save it and perform the same process we did a minute ago so that you end up with another vbaProject.bin file. Make sure to remember the password!

You should now have both of your vbaProject.bin files open in your Hex Editor. Don’t get them mixed up or we’re going to have big problems.

Use Ctrl + F in the file you created to find the following string:

  CMG= 

This is the start of the code that stipulates the current password. We need to copy and paste three values:

  CMG=DPB=GC= 

Below you can see how I did it.

excel copy code

Transfer this code over to your other vbaProject.bin file, and place it in the corresponding position, making sure not to delete anything else. Save your edited hex file.

Now, delete the original vbaProject.bin file from the document we’re trying to remove the protections from. Replace it with your edited vbaProject.bin file, then change its filename back from .zip to .xlms or .xls.

Open up the file in Excel. Head to the Developer tab and click Visual Basic, and try to access the Project menu. You should see the password prompt, and with any luck, the correct password should be the one we set up in our dummy document.

excel new password

We’re back in the document! Now you can get along with whatever you were meant to be doing.

Notes on Beating the System

This trick can be very handy when you’re in a bind, and you desperately need access to a password protected VBA macro. However, it should also illustrate a major security flaw that’s present in Excel.

If you’re using this kind of password protection to defend your VBA code, know that a workaround is out there. It’s a deterrent at best — anyone with the ability to run a Google search will know exactly how to cut through your defenses.

It just goes to show how important it is for us to constantly question our security practices. Applying password protection might seem to offer valuable piece of mind, but in a situation like this one, it’s not all that effective.

Do you have questions about removing password protection from an Excel document? Or do you have a security tip you want to share with others? Why not join the conversation in the comments section below?

Image Credit: OrelPhoto via Shutterstock.com

Содержание

  1. VBA Excel. Защита паролем проекта VBA и снятие защиты
  2. Установка пароля на VBA-проект
  3. Снятие защиты с VBA-проекта
  4. Отключение забытого пароля
  5. 4 комментария для “VBA Excel. Защита паролем проекта VBA и снятие защиты”
  6. Как сбросить парольную защиту (пароль) модуля VBA в Excel 2010
  7. Вынужденный обход парольной защиты модуля VBA в Excel 2010
  8. Вынужденный обход парольной защиты модуля VBA в Excel 2010
  9. Как программно снять пароль с VBA проекта?

VBA Excel. Защита паролем проекта VBA и снятие защиты

Установка пароля на VBA-проект и снятие защиты с него. Отключение забытого пароля с проекта VBA, созданного в книге Excel с расширением .xlsm.

Установка пароля на VBA-проект

Защита проекта VBA паролем помогает от случайного или намеренного изменения кода обычным пользователем. От злоумышленников простая установка пароля не спасет.

Защита проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и установите галочку в чек-боксе «Lock project for viewing».
  3. Введите пароль в поле «Password» и повторите пароль в поле «Confirm password».

  1. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет защищен.

Снятие защиты с VBA-проекта

Снятие защиты с проекта VBA стандартными средствами:

  1. Перейдите в окно «VBAProject — Project Properties» через пункты меню: «Tools» >> «VBAProject Properties».
  2. В открывшемся окне выберите вкладку «Protection» и уберите галочку из чек-бокса «Lock project for viewing».
  3. Очистите поля «Password» и «Confirm password».
  4. Нажмите кнопку «OK» и закройте книгу Excel.

При следующем открытии этой книги проект VBA будет доступен.

Отключение забытого пароля

Этот способ отключения забытого пароля применим к файлам Excel с расширением .xlsm. Чтобы не забывать пароли, используйте менеджер KeePass.

  1. Сделайте копию книги Excel, чтобы случайно не потерять ее при вмешательстве в код.
  2. Откройте файл .xlsm любым архиватором (я использую бесплатный 7-Zip). Иногда рекомендуют заменить расширение .xlsm на .zip или добавить одно к другому (.xlsm.zip), но делать этого совершенно не обязательно.

  1. Откройте в архиве папку «xl», найдите файл «vbaProject.bin» и перетащите его в папку с книгой Excel (по умолчанию происходит копирование).

  1. Откройте файл «vbaProject.bin» программой «Notepad++», обычный блокнот не подойдет.
  2. С помощью поиска (Ctrl+F) найдите фразу DPB= , замените в ней букву «B» на любую другую, например на «z» и сохраните файл.

  1. Перетащите файл «vbaProject.bin» обратно в архив, подтвердив копирование. Архив можно закрыть.
  2. Откройте книгу Excel и на запрос о продолжении загрузки с невалидным ключом «DPz» ответьте «Да».

  1. Откройте редактор VBA, дважды или трижды нажав «OK» в сообщении о неизвестной ошибке (у меня такое предупреждение появляется трижды).

  1. Сохраните книгу Excel и закройте.
  2. Откройте файл Excel, перейдите в редактор VBA, откройте окно «VBAProject — Project Properties» («Tools» >> «VBAProject Properties») и убедитесь, что галочка у чек-бокса «Lock project for viewing» снята, поля «Password» и «Confirm password» — пустые.

4 комментария для “VBA Excel. Защита паролем проекта VBA и снятие защиты”

Здравствуйте Евгений.
Имеется ли способ на 100% защитить код от просмотра/копирования?
Просмотрел в сети много мануалов, и везде пишут, что все пароли с проекта снимаются за 5-20 минут не зависимо от вида блокировки.
В планах написать программу, аналогов которой не существует, и которая будет содержать коммерческую тайну нашей фирмы. Возможность использования софта, путем снятия пароля третьими лицами отбивает все желание.

Здравствуйте, Тамир!
Когда я интересовался защитой VBA-проекта паролем, не нашел надежного способа.

Провел мониторинг.
Что скажете касаемо обфускации кода и переноса кода в dll, как методов защиты кода?
В сети пишут, что это действенные методы, или они так же имеют недочеты?

Здравствуйте, Тамир!
Здравствуйте, Евгений!
Здравствуйте, коллеги!
dll – хорошо и надёжно, вот только таскать с xls ещё и dll не удобно, и большинству это не понравится.
Обфускация как надёжная защита с моей т.зр. вообще смешно: от копирования никак вообще не защищает, читаемость быстро восстанавливается Relace All’ом.
Коллеги, поделитесь мыслями.

Источник

Как сбросить парольную защиту (пароль) модуля 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 . Чтобы задать свой пароль, введите его и подтвердите в полях ниже это же окна.

Источник

Вынужденный обход парольной защиты модуля VBA в Excel 2010

Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .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 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.

Источник

Вынужденный обход парольной защиты модуля VBA в Excel 2010

Здравствуйте, друзья!
Последние дни бился над такой задачей:
Имеется файл .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 версиях Офиса. К тому же вопрос этики — пришлось «обходить» защиту кода макроса.

Источник

Как программно снять пароль с VBA проекта?

Большинство наверняка знает как установить/снять пароль с VBA проекта вручную:

  1. ToolsVBAProject Properties-вкладка Protection;
  2. для защиты устанавливается галочка «Lock project for viewing«; для разблокировки — снимается;
  3. вписывается/удаляется сам пароль в полях Password и Confirm password.

Предположу, что не очень многим может понадобиться снимать пароль с проекта VBA средствами самого VBA. Но все же данная тема имеет спрос, как я смог убедиться, общаясь на форумах. Прежде всего это может пригодиться тем, кто создает свои приложения на VBA и периодически нужно вносить изменения в уже созданные проекты(например копирование модулей и кодов из одного проекта в другой). Сразу оговорюсь: я не рассматриваю ситуации, когда вам неизвестен пароль к проекту. Предполагается, что вы знаете пароль и можете снять его вручную.

Я лично знаю два способа снять пароль программно: через метод SendKeys и использовании функций API. Т.к. второй способ довольно громоздкий и сложный для понимания — я в данной статье опишу лишь первый способ. Он не содежит каких-либо изысков и довольно прост.

Sub Unprotect_VBA() Dim objVBProject As Object, objVBComponent As Object, objWindow As Object Workbooks.Open «C:1.xls» Set objVBProject = ActiveWorkbook.VBProject ‘просматриваем все окна проекта в поисках окна снятия защиты For Each objWindow In objVBProject.VBE.Windows ‘ Type = 6 — это нужное нам окно If objWindow.Type = 6 Then objWindow.Visible = True objWindow.SetFocus: Exit For End If Next ‘вводим пароль и подтверждаем ввод SendKeys «

«, True: SendKeys ««, True ‘здесь Ваш код по внесению изменений в проект Set objVBProject = Nothing: Set objVBComponent = Nothing: Set objWindow = Nothing ActiveWorkbook.Close True End Sub

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

«C:1.xls» — полный путь к книге, включая расширение файла.

« — пароль к проекту. Тильды нужны, но они не являются частью кода. Т.е. сам код это — 1234.

Способ, как видите, действительно очень прост, но это порождает и недостатки. Главный недостаток: снятие пароля данным методом весьма нестабильно и иногда может не срабатывать. Так же во время работы данного кода крайне нежелательно пользоваться мышью и клавиатурой. Точнее даже не нежелательно, а просто нельзя, если вам необходим положительный результат.

Также см.:
[[Копирование модулей и форм из одной книги в другую]]
[[Как удалить макросы в книге?]]
[[Как добавить код процедуры программно, скопировать модуль]]
[[Защита листов/снятие защиты]]

Статья помогла? Поделись ссылкой с друзьями!

Источник

Понравилась статья? Поделить с друзьями:
  • Как снять пароли с файла excel 2007
  • Как снять округление в excel
  • Как снять ограничения по проверке данных в ячейке excel
  • Как снять ограничения на редактирование в word онлайн
  • Как снять ограничения на редактирование в word без пароля