Макрос пароль на книгу excel

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
Регистрация: 03.06.2014

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Workbook.Protect [Password]

 

zavhoz1984

Пользователь

Сообщений: 161
Регистрация: 23.09.2015

#4

19.11.2015 19:35:00

Пишу это и не работает. На ставится пароль :(

Код
Application.DisplayAlerts = False
ActiveWorkbook.Protect ("1234")
ActiveWorkbook.Save
ActiveWorkbook.Close
 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#5

19.11.2015 19:37:10

Код
ActiveWorkbook.Protect Password:="1234"
 

Вы будете смеяЦо, но я открываю книгу вновь и у меня никакого пароля не просят… :(

 

zavhoz1984

Пользователь

Сообщений: 161
Регистрация: 23.09.2015

#7

19.11.2015 19:50:06

Код

Код
Application.DisplayAlerts = False
ActiveWorkbook.Protect Password:="1234"
ActiveWorkbook.Save
ActiveWorkbook.Close
 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

19.11.2015 19:51:51

Цитата
Kuzmich написал:
Workbook.Protect

Неверно. Для установки пароля на открытие:

Код
ActiveWorkbook.Password = "1234"

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

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Kuzmich, А я в цитате Вашего сообщения указал как Вы там написали :)
Protect и Password — это разные вещи.
Protect — метод, устанавливающие защиту книги(аналог Рецензирование — Защитить книгу).
Password — свойство книги, отвечающее за пароль на открытие книги.

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

 

zavhoz1984

Пользователь

Сообщений: 161
Регистрация: 23.09.2015

#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
Хочу чтоб Если книгу excel 2007 c названием BOOK1 перепишут в другой компьютер, там его не могли…

10

12 / 12 / 4

Регистрация: 16.03.2012

Сообщений: 252

24.03.2014, 10:07

2

Нужно в автоопен поставить:
ActiveWorkbook.Unprotect Password:=»ПАРОЛЬ»
Это снятие автоматом пароля.

Таже нужно ставить пароль автоматом перед закрытием. Для нужно в саб Sub Workbook_BeforeClose вставить:
ActiveWorkbook.Protect Password:=»ПАРОЛЬ», structure:=True, Windows:=True



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,
имею ввиду, что при закрытии книги автоматически пишется пароль. При открытии же загружается макрос, который его снимает. Т.е. создается ситуация, что без включенных макросов книга закрыта для редактирования: не может смотреть др. листы, не можете редактировать 1й лист и т.д. и т.п.
Если макросы отключены, нужно знать пароль для снятия защиты книги от редактирования. В противоположном случае, вы его не снимите, книга откроется, но тоьлко титульный лист.
Вобщем, это гарантирует, что пользователь не сможет отключить макросы, веренее это не ничего не даст: книга закрыта для редактирования.



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

Visual Basic
1
2
3
Private Sub Auto_Open()
ActiveWorkbook.Unprotect Password:="1234"
End Sub

Имеется в виду такой вариант? Если да, то я задаю в лист «Эта книга» его и все равно книга с нуля запускается под паролем.

Добавлено через 10 минут
Возможно я конечно не так выразился изначально, еще раз по сути, меня не интересует защита отдельных листов и структуры от редактирования и изменения (все что связано со вкладкой Рецензирование) — с этим я разобрался, меня интересует шифровании книги стандартными методами (через Сервис при сохранении), вернее снятие пароля оттуда макросом. Насколько я понимаю, книгу надо сначала расшифровать паролем, а потом все макросы и будут запускаться (в моем понимании работы экселя), по-этому и спрашиваю, можно ли как-то это обойти. Была конечно идея запускать одну книгу, которая копировала в буфер обмена пароль, открывала нужную книгу и вставляла грубо, но это некрасиво и плоско, по-этому и интересно можно ли.



0



mrf

12 / 12 / 4

Регистрация: 16.03.2012

Сообщений: 252

24.03.2014, 15:32

9

книга не запускается под поролем если он не установлен.
1. Сохраняете книгу(и все сделанные изменения) с автоматической установкой пароля (макрос вписывается в «эта книга»):

Visual Basic
1
2
Sub Workbook_BeforeClose
ActiveWorkbook.Protect Password:="1234", structure:=True, Windows:=True

2. Также у вас прописан макрос на автоматической выполнение при открытии (обычный макрось в «mudules»:

Visual Basic
1
2
3
Private Sub Auto_Open()
ActiveWorkbook.Unprotect Password:="1234"
End Sub

Т.е. Получается, что выходя из книги устанавливаетсяы пароль на защиту книги(структуры и окно). А при открытии книги выполняется макрос, которые его снимает. Т.о. если макросы отключены, то книги остается защищенной (структура окна и т.п.)



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 минуту

Visual Basic
1
2
3
4
5
6
Sheets("1").Select
    With UserForm1
    
         .Show
         
         If .txtPwd.Text <> "1234" Then Exit Sub



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 должен быть доступен.

8)       Но иногда защита не снимается, тогда нужно сохранить файл, проверить, что он действительно сохранился! И проделать повторно операции с 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.

Что делает макрос: Если Вам постоянно приходится думать о защите листов, прежде чем отправить свои файлы, этот макрос может помочь вам защитить рабочие листы перед закрытием

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

Этот код запускается событием рабочей книги (BeforeClose— перед закрытием). При нажатии на кнопку закрыть срабатывает событие и запускается макрос. Макрос автоматически защищает рабочий лист, а затем сохраняет книгу

Код макроса

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Шаг 1: Защищает лист с паролем
Sheets("Отчет1").Protect Password:="Akademia_Excel"
'Шаг 2: Сохраняем книгу
ActiveWorkbook.Save
End Sub

Как работает этот код

  1. На шаге 1 мы явно указываем, какой лист мы хотим защитить — Отчёт, в данном случае. Мы также прописываем аргумент Password (пароль): = «Akademia_Excel». Это строка установит пароль для снятия защиты. Password (пароль) — аргумент не является обязательным. Если его не указывать, то лист будет по-прежнему защищен, но снять защиту сможет любой желающий. Кроме того, следует помнить, что пароли Excel чувствительны к регистру, так что обратите внимание на заглавные и строчные буквы в пароле.
  2. Шагом 2 мы говорим Excel сохранить книгу. Если мы не сохраним, то защита не будет действовать при следующем открытии книги.

Как использовать

Для реализации этого макроса, Вам нужно скопировать и вставить его в код события Workbook_BeforeClose. Размещение макроса здесь позволяет запускать макрос непосредственно перед закрытием excel-файла.

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. В окне проекта найдите свой проект/имя рабочей книги и нажмите на знак плюс рядом с ним в чтобы увидеть все листы и модуль ЭтаКнига.
  3. Правой кнопкой мыши нажмите на модуле ЭтаКнига и выберите View Code.
  4. В левой части окна выберите объект WorkBook (Excel автоматом предложит написать макрос для события Workbook_Open (можете позже удалить его за ненадобностью)
  5. В правом выпадающем списке свойство BeforeClose

Понравилась статья? Поделить с друзьями:
  • Макрос поиска решений в excel
  • Макрос очистки диапазона ячеек excel
  • Макрос объединить все файлы в один excel
  • Макрос поиска в excel по первым буквам
  • Макрос отправки на печать excel