It is a best practice, to protect the Macro (VBA Code) from other users to edit or view. In this article, we explain to create a simple macro and protect the same “VBA Project” using a password in Excel from other users.
Implementation:
Follow the below steps to protect your excel macro with a password:
Step 1: Open an excel file, to create a simple “hello world” macro.
Step 2: Press Alt + F11 – to open Visual Basic Editor.
Step 3: Click Insert >> Module, which will add a new module as in Img1.
Img 1
Step 4: Type the below code in “code window”.
Sub firstMacro() MsgBox "Hello World" End Sub
Step 5: Right-click “VBAProject (Book1)” and then click “VBAProject Properties”.
Step 6: GoTo Protection Tab >> Check “Lock project for viewing” and type your password in both Password and Confirm password input text boxes. Press “OK”
Step 7: Save your Excel workbook as Excel Macro-Enabled Workbook (*.xlsm) and close
Step 8: Now reopen your excel file. Press Alt+F8 – to open the Macro dialog box. Select the macro “firstMacro” and click “RUN”.
Step 9: Our macro will pop up below the message box. Close or press OK to hide the message box
Step 10: Press Alt + F11 – to open Visual Basic Editor. Now user cannot see any information in the VBA.
Step 11: Double click “VBAProject (vbaProtect.xlsm)”, It will ask the user to enter a password.
Step 12: Type your password and press “OK”. Now user can see all the excel objects and Macro.
At this point we have successfully created a macro in VBA and protected it with a password.
Не подскажите, как запаролить книгу макросом? Как ручками — знаю. Пробовал записать макрорекордером — нифига. |
|
justirus Пользователь Сообщений: 295 |
|
Kuzmich Пользователь Сообщений: 7998 |
Workbook.Protect [Password] |
zavhoz1984 Пользователь Сообщений: 161 |
#4 19.11.2015 19:35:00 Пишу это и не работает. На ставится пароль
|
||
Kuzmich Пользователь Сообщений: 7998 |
#5 19.11.2015 19:37:10
|
||
Вы будете смеяЦо, но я открываю книгу вновь и у меня никакого пароля не просят… |
|
zavhoz1984 Пользователь Сообщений: 161 |
#7 19.11.2015 19:50:06 Код
|
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#8 19.11.2015 19:51:51
Неверно. Для установки пароля на открытие:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
Kuzmich Пользователь Сообщений: 7998 |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Kuzmich, А я в цитате Вашего сообщения указал как Вы там написали Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
zavhoz1984 Пользователь Сообщений: 161 |
#11 20.11.2015 09:19:10 Огромное спасибо! |
269 / 14 / 0 Регистрация: 26.02.2014 Сообщений: 142 |
|
1 |
|
Защита книги и макрос18.03.2014, 13:33. Показов 19340. Ответов 10
Добрый день уважаемые форумчане. У меня довольно интересный для меня вопрос, если допустим поставить на книгу пароль на открытие стандартным способом через «Сервис» и т.д., можно ли при включении книги с включенными макросами, что бы он снимался каким-то образом? Смысл в том, чтобы при включенных макросах программа запускалась без требования пароля, а если макросы выключить, то книгу без пароля уже открыть нельзя будет. Как ставить защиту листов и структуры книги понятно, а вот как с общей книги…
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
18.03.2014, 13:33 |
Ответы с готовыми решениями:
Защита книги и кода excel Защита книги от переноса на другой ПК Защита книги excel 2007 10 |
12 / 12 / 4 Регистрация: 16.03.2012 Сообщений: 252 |
|
24.03.2014, 10:07 |
2 |
Нужно в автоопен поставить: Таже нужно ставить пароль автоматом перед закрытием. Для нужно в саб Sub Workbook_BeforeClose вставить:
0 |
40 / 40 / 9 Регистрация: 19.03.2014 Сообщений: 215 |
|
24.03.2014, 12:03 |
3 |
Скорее всего нельзя.
0 |
12 / 12 / 4 Регистрация: 16.03.2012 Сообщений: 252 |
|
24.03.2014, 15:02 |
4 |
Stormy day,
0 |
269 / 14 / 0 Регистрация: 26.02.2014 Сообщений: 142 |
|
24.03.2014, 15:10 [ТС] |
5 |
Может глупый вопрос, а что есть Auto Open и где задавать ему макрос?
0 |
12 / 12 / 4 Регистрация: 16.03.2012 Сообщений: 252 |
|
24.03.2014, 15:16 |
6 |
авто опен — это обычный макрос в каталоге макросов. Делает «создать макрос» …и т.д. Просто первая строчка в макросе «Private Sub auto_open()». Вобщем, если макрос так называется — он запусется при открытии книги.
0 |
40 / 40 / 9 Регистрация: 19.03.2014 Сообщений: 215 |
|
24.03.2014, 15:18 |
7 |
0 |
Derjzemit 269 / 14 / 0 Регистрация: 26.02.2014 Сообщений: 142 |
||||
24.03.2014, 15:30 [ТС] |
8 |
|||
Имеется в виду такой вариант? Если да, то я задаю в лист «Эта книга» его и все равно книга с нуля запускается под паролем. Добавлено через 10 минут
0 |
mrf 12 / 12 / 4 Регистрация: 16.03.2012 Сообщений: 252 |
||||||||
24.03.2014, 15:32 |
9 |
|||||||
книга не запускается под поролем если он не установлен.
2. Также у вас прописан макрос на автоматической выполнение при открытии (обычный макрось в «mudules»:
Т.е. Получается, что выходя из книги устанавливаетсяы пароль на защиту книги(структуры и окно). А при открытии книги выполняется макрос, которые его снимает. Т.о. если макросы отключены, то книги остается защищенной (структура окна и т.п.)
0 |
269 / 14 / 0 Регистрация: 26.02.2014 Сообщений: 142 |
|
24.03.2014, 15:40 [ТС] |
10 |
0 |
mrf 12 / 12 / 4 Регистрация: 16.03.2012 Сообщений: 252 |
||||
24.03.2014, 15:44 |
11 |
|||
наверное, это я не правильно понял Добавлено через 1 минуту
0 |
Время на прочтение
5 мин
Количество просмотров 25K
Всем привет! Я обычный пользователь MS Excel. Не являющийся профессиональным программистом, но накопивший достаточно опыта, для установки и обхода защиты проектов VBA.
Дисклеймер:
В данной статье рассмотрены виды защиты проектов VBA, от несанкционированного доступа. Их сильные и слабые стороны – ранжирование.
Цель статьи показать слабые и сильные стороны каждого вида защиты проекта VBA в MS Office.
Демонстрация разработанных инструментов, в надстройке Macro Tools VBA, для снятия и установки той или иной защиты.
Все инструменты реализованы стандартными средствами VBA, без использования дополнительных библиотек.
Главная панель Надстройки Macro Tools VBA
Первый вид защиты — Обычный пароль
Время на снятие: мгновенно
Недостаток: быстрый доступ к запароленному модулю VBA
Стандартный инструмент (В среде VBE: панель Tools -> VBAProject Properties -> Protection).
Самая легко снимающаяся защита. В интернете легко находится код, для снятия данной защиты.
Данную защиту можно снять следующим инструментом:
Второй вид защиты — Project is Unviewable
Время на снятие: от 10 до 15 мин (в ручную)
Недостаток: доступ к исходному коду модуля VBA
Один из самых распространённых видов защит. Встречается в 95% файлах с защитой модуля VBA. При попытке открыть проект, открывается диалоговое окно, с сообщением: Project is Unviewable.
Большинство пользователей Excel, не могут снять данную защиту, так как она имеет множество вариации и нюансов, для ее снятие нужно иметь представление о внутренней структуре файла Excel.
Основан, данный вид защиты, на изменение ключей:
CMG=«4A488FCC54D054D054D054D0»
DPB=«0B09CE0F8E108E108E»
GC=«CCCE09520B120C120CED»
в файле vbaProject.bin
.
Кратко, как создается данная защита
Для создания данной защиты нужно, разархивировать файл Excel. Перейти в архиве в папку xl, открыть файл vbaProject.bin, в конце файла находятся наши ключи, редактируем значения ключей на пусто, сохраняем файл. Переводим наш архив, обратно в файл Excel. Готово!
Это самый простой вариант данной защиты, но существует множество модификаций.
Алгоритм снятия защиты Project is Unviewable.
1) Разархивируем подопытный файл, переходим в файл …xl_relsworkbook.xml.rels
2) В файле workbook.xml.rels ищем строку, содержащую слово vbaProject, обычно имеет следующий вид: />. В этой строке нас интересует ключ Target,иего значение. Значение является название файла, в котором находится проект VBA. Иногда, защищающий меняет значения ключа на printerSettings.bin.Получается маскировка файла с проектом VBA под другой файл.
3) Открываем на редактирование файл, указанный в ключе Target, ищем в файле ключи CMG, DPB, GC. И меняем в их названиях любую букву на любую другую, например: CMC, DPC, CC. При поиске нужно быть аккуратным, так как защищающий может поместить в проект форму, подписью повторяющую один из ключей, например такую: DPB=«0B09CE0F8E108E108E». При ее изменении проект VBA, будет удален из книги Excel. Сохраняем и закрываем файл.
4) Переводим архив обратно в файл Excel.
5) Запускаем приложение Excel, выполняем следующее: в Центре управления безопасностью -> Параметры макросов -> Отключить все макросы без уведомления. Перезапускаем Excel. Данная операция нужна, для блокировки защиты, которую иногда ставят авторы макросов. Данная защита реализована следующим образом. В модуле VBA «ЭтаКнига», создается процедуры, реагирующие на события открытия книги или закрытия книги. Эти события обычно проверяют, наличие пароля на проект VBA, запрет сохранения и прочее.
6) Открываем файл. Если все правильно сделано то, Excel, будет ругаться на не правильные ключи, которые мы отредактировали, в пункте 3. Жмем, да, пока данные сообщения не закончатся и диалоговое окно закроется.
Если данное сообщение не появляется то, вы отредактировали не файл который содержит проект VBA.
7) Открываем проект VBA. После всего, проект VBA должен быть доступен.
Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 1 по 7. Обычно так происходит когда в файле workbook.xml.rels в ключе Target установлено printerSettings.bin.При сохранение, Excel исправляет это на значение на vbaProject.bin
Данную защиту можно установить и снять следующим инструментом:
Третий вид защиты — Hidden Module, скрытые модули VBA
Время на снятие: от 15 до 20 мин (нужен редактор OLE — объектов, Structured Storage Viewer, например.
Недостаток: доступ к коду модуля VBA
Менее распространенный вид защиты обычно встречается в комбинации с защитой Project is Unviewable. При установке данной защиты модуль VBA не отображается в проекте книги Excel. О его существовании можно узнать, проанализировав код VBA (что требует время!) или открыть файл Excel в программе OpenOffice или LibreOffice (так же можно смотреть код при защите Project is Unviewable, но данный способ не дает возможность получить рабочий файл, без пароля).
Просмотр кода VBA в LibreOffice
Кратко, как создается данная защита
Для создания данной защиты нужно отредактировать файл с проектом VBA — vbaProject.bin или printerSettings.bin,в зависимости от настроек в файле …xl_relsworkbook.xml.rels. В конце файла удаляются строки вида: Module1=32, 32, 635, 330, Z. С нужными названиями модулей.
Для снятия данной защиты нужно в файле vbaProject.bin — восстановить удаленные записи модулей.
Данную защиту можно установить следующим инструментом.
Четвертый вид защиты — Обфускация кода
Время на снятие: неизвестно, зависит от объема кода и пере использования частей кода
Обфусцированный код VBA
Недостаток: необходимость тестирование файла после обфускации, на работоспособность
Крайне редкий вид защиты, основанный на изменении исходного кода VBA, в не удобочитаемый вид для человека. Удаляются все комментарии, форматирование кода, переименовываются названия всех переменных, процедур, функций, модулей и прочего. Злоумышленнику никогда не удастся восстановить первоначальный вид кода, и потребует достаточно много времени для, его восстановления в удобно читаемый вид для человека.
Для де-обфускации кода нужно иметь время, специализированное ПО.
Данную защиту можно установить следующим инструментом.
Пятый вид защиты — Перенос кода в dll
Время на снятие: неизвестно, зависит от языка программирования и квалификации
Недостаток: необходимости в дополнительном файле dll
Один из самых редких видов защиты. Основная идея перенос основного кода в отдельную библиотеку dll, написанную на любом другом языке программирования. Не распространённость данный вид защиты получил по следующей причине, необходимости за файлом Excel, «таскать» дополнительный файл, dll.
Для получения доступа к коду dll, нужно обладать специальными знаниями.
Заключение
В заключении хочу выделить бесполезность защит: Project is Unviewable и Hidden Module которые, по существу ни отчего не защищают. Позволяют просматривать код VBA, без изменения исходного файла, в таких программах как OpenOffice или LibreOffice. Так и снимаются без особых проблем.
Skip to content
Как защитить рабочий лист в книге перед закрытием
На чтение 2 мин. Просмотров 1.5k.
Что делает макрос: Если Вам постоянно приходится думать о защите листов, прежде чем отправить свои файлы, этот макрос может помочь вам защитить рабочие листы перед закрытием
Содержание
- Как макрос работает
- Код макроса
- Как работает этот код
- Как использовать
Как макрос работает
Этот код запускается событием рабочей книги (BeforeClose— перед закрытием). При нажатии на кнопку закрыть срабатывает событие и запускается макрос. Макрос автоматически защищает рабочий лист, а затем сохраняет книгу
Код макроса
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Шаг 1: Защищает лист с паролем Sheets("Отчет1").Protect Password:="Akademia_Excel" 'Шаг 2: Сохраняем книгу ActiveWorkbook.Save End Sub
Как работает этот код
- На шаге 1 мы явно указываем, какой лист мы хотим защитить — Отчёт, в данном случае. Мы также прописываем аргумент Password (пароль): = «Akademia_Excel». Это строка установит пароль для снятия защиты. Password (пароль) — аргумент не является обязательным. Если его не указывать, то лист будет по-прежнему защищен, но снять защиту сможет любой желающий. Кроме того, следует помнить, что пароли Excel чувствительны к регистру, так что обратите внимание на заглавные и строчные буквы в пароле.
- Шагом 2 мы говорим Excel сохранить книгу. Если мы не сохраним, то защита не будет действовать при следующем открытии книги.
Как использовать
Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.
- Активируйте редактор Visual Basic, нажав ALT + F11.
- В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
- Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
- В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
- В правом выпадающем списке свойство BeforeClose