Макрос для снятия защиты листа или книги Excel. Макрос установить пароль файла excel


Запрет доступа к листу Excel с помощью пароля | Info-Comp.ru

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

Для начала расскажу, что я хочу реализовать. Вы открываете файл Excel и попадаете на определенный лист, доступ к которому Вы имеете, и при переходе на другой лист, на котором стоит пароль, будет выскакивать формочка для ввода пароля, при этом содержимое листа будет скрыто. Другими словами пользователь, который не должен, иметь доступ к этому листу не будет видеть, что там есть, но если пользователь просто случайно нажал на этот лист, у нас будет кнопочка возврата на исходный лист.  Все это будет реализовано на VBA (Visual Basic for Applications).

Ставим пароль на доступ к листу Excel

Ну, давайте начнем, откройте Excel и сохраните его, допустим под названием «Пароль на лист». Затем на первом листе, в центре напишите «Секретные данные», а на Листе2 напишите «Общедоступный лист».

После этого нажимайте ALT+F11 для перехода в редактор Visual Basic. Затем нажмите Insert->UserForm (для добавления в проект формы). Добавьте на форму две кнопки и одно текстовой поле.

Измените свойство Caption кнопки CommandButton1 на «Ввод», а кнопки CommandButton2 на «Вернуться назад». Также измените значение Caption нашей формы (UserForm1), скажем на «Для продолжения введите пароль». Измените свойство TextAlign, нашего текстового поля TextBox1, на 2, т.е. выравнивание текста по центру. Также можете изменить шрифт и размер текста в свойстве Font. А еще в свойстве Text (объекта TextBox1) впишите «Введите пароль», чтобы по умолчанию загружался этот текст.

Если Вы все сделали правильно, то у Вас внешний вид должен получиться примерно вот таким (за исключением размера объектов):

Код VBA для запрета доступа к листу Excel

Затем впишите вот такой код в окно кода формы:

Private Sub CommandButton1_Click() If TextBox1.Text = "Мой пароль" Then Windows("Пароль на лист.xls").Visible = True End Else MsgBox "Вы ввели неправильный пароль", vbInformation, "Неправильный пароль" End If End Sub Private Sub CommandButton2_Click() Windows("Пароль на лист.xls").Visible = True Worksheets("Лист2").Activate End End Sub Private Sub UserForm_Activate() ActiveWindow.Visible = False End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Cancel = True End Sub

Теперь осталось вызывать эту форму при активации листа, для этого в редакторе VB выберите лист, на который Вы хотите поставить пароль, щелкните два раза по нему, у Вас откроется окно кода, Вы вставляете туда вот это:

Private Sub Worksheet_Activate() UserForm1.Show End Sub

Еще, для того чтобы по умолчанию всегда открывался общедоступный лист, также в редакторе выберите «Эта книга» откройте редактор кода (двойным щелчком) и вставьте вот это:

Private Sub Workbook_Open() Worksheets("Лист2").Activate End Sub

Можно еще запретить изменять пароль пользователем, т.е. допустим, с этим файлом работает человек, который немного разбирается в Excel, и он легко может зайти в редактор Visual Basic и изменить пароль. Для того чтобы этого избежать поставим пароль на редактирования VBA проекта. В редакторе Visual Basic нажмите правой кнопкой на VBAProject, откроется меню, в нем выберите Properties. Далее в следующем окне перейдите на вкладку Protection, поставьте галочку как на картинке и введите пароль.

После этого редактировать код всех макросов, т.е. код Visual Basic сможете только Вы, или тот человек, который знает пароль на проект VBA.

Если Вы все сделали правильно, то у Вас при открытие файла будет открываться «Лист2», а при попытке перейти на «Лист1» будет запускаться форма для ввода пароля, а при нажатие кнопки «Вернуться назад», Вы будете возвращаться на «Лист2».

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

Похожие статьи:

info-comp.ru

Взлом пароля Excel. Макрос VBA, на основе Excel

Существует простой способ взломать забытый пароль Excel. И что немаловажно, сделать это можно абсолютно бесплатно с помощью самого Excel. Итак если файл открывается, но Вам необходимо убрать защиту листа или книги, используйте надстройку, которую я написал: Идея алгоритма заключается в использовании недостатка стандартного метода шифрования Excel. Программа перебирает пароли от 1 до 8 символов. Последний символ пароля подбирается из диапазона кодов от 32 до 255. Остальные символы подбираются из кодов 65 и 66. В результате используется пароль отличный от оригинального, но тем не менее рабочий. К сожалению для открытия файла, через Workbook.Open(), этот метод не подходит. Метод также не работает в Excel 2007, где используется более стойкий алгоритм шифрования. Исключение составляет французская версия Excel 2007, где из-за местных законов шифрование остается прежним.

Ниже приведен исходный код надстройки для взлома пароля в Excel:

Const MENUNAME = "ЗАЩИТА" 'Установка ярлыка меню Sub Auto_Open() Install MsgBox "Меню установлено, используйте ""ЗАЩИТА->Снять защиту"" для снятия защиты с активной книги Excel и всех листов" End Sub 'Взлом всех паролей, путем перебора. Sub BruteForceUnprotect() Dim ProtectedObjects As New Collection Const LastCharStart = 32 Const LastCharFinish = 255 Application.DisplayAlerts = False 'Добавление защищенной книги в набор объектов для вскрытия If (ActiveWorkbook.ProtectStructure Or ActiveWorkbook.ProtectWindows) Then ProtectedObjects.Add ActiveWorkbook End If 'Добавление в набор защищенных листов On Error Resume Next For Each WSheet In ActiveWorkbook.Worksheets WSheet.Protect ("") If Not WSheet.Unprotect("") Then: ProtectedObjects.Add WSheet Next On Error GoTo 0 'Поиск подставного пароля. Оригинальный пароль не может быть восстановлен этим способом. For i = 1 To 255 fakepassword = FakePass(i) If ProtectedObjects.Count = 0 Then: Exit For For LastCharIndex = LastCharStart To LastCharFinish Password = fakepassword & Chr(LastCharIndex) If ProtectedObjects.Count > 0 Then For j = 1 To ProtectedObjects.Count If UnprotectObject(ProtectedObjects(j), Password) = True Then ProtectedObjects.Remove (j) If ProtectedObjects.Count > 0 Then: j = j - 1 End If Next End If Next Next If ProtectedObjects.Count = 0 Then MsgBox "Пароли на текущую книгу и листы сняты!" Else MsgBox "Похоже используется нестандартное шифрование. Защита некоторых объектов не может быть снята." End If Application.DisplayAlerts = True End Sub Function UnprotectObject(obj, pass) UnprotectObject = False On Error GoTo WrongPassword obj.Unprotect pass UnprotectObject = True WrongPassword: End Function 'Возвращает пароль на основе переданного числового значения Function FakePass(Value) Mask = 1 FakePass = "" While Mask <= Value If (Value And Mask) = 0 Then FakePass = "A" & FakePass Else FakePass = "B" & FakePass End If Mask = Mask * 2 Wend If Len(FakePass) > 0 Then: FakePass = Right(FakePass, Len(FakePass) - 1) End Function 'Установка меню Sub Install() Uninstall True AddButton MENUNAME, "Снять защиту", "BruteForceUnprotect" AddButton MENUNAME, "Удалить меню надстройки", "Uninstall" End Sub 'Удаление меню надстройки Sub Uninstall(Optional silent = False) If Not silent Then If MsgBox("Вы действительно желаете удалить меню надстройки ?", vbYesNo) = vbNo Then Exit Sub End If End If On Error Resume Next Application.CommandBars("Worksheet Menu Bar").Controls(MENUNAME).Delete On Error GoTo 0 End Sub 'Добавить пункт в меню Sub AddButton(menu As String, submenu As String, macro As String, Optional descr As String = "") On Error GoTo createmenu If IsNull(Application.CommandBars("Worksheet Menu Bar").Controls(menu)) Then: GoTo createmenu On Error GoTo create If IsNull(Application.CommandBars("Worksheet Menu Bar").Controls(menu).Controls(submenu)) Then: GoTo create End createmenu: Set mnu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=10) mnu.Caption = "&" & menu mnu.Visible = True create: Set Button = Application.CommandBars("Worksheet Menu Bar").Controls(menu).Controls.Add(Type:=1, ID:=2950) With Button .DescriptionText = descr .TooltipText = descr .Caption = "&" & submenu .Style = 3 .OnAction = macro End With End Sub

procod.blogspot.com

Как снять защиту с листа Excel защищенного паролем: алгоритм действий

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

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

Работа с Excel 2003

Поставлена задача добавить список на странице. При попытке внести следующий порядковый номер вы сталкиваетесь с сообщением: ячейка или диаграмма защищена от изменений.

План действий вам подсказывает сам Excel. Идем по пути: Сервис → Защита → Снять защиту листа.

Работа с Excel 2007, 2010

В данном варианте Excel другое меню, вместо «Сервис» используется: «Рецензирование» → «Снять защиту листа» (группа «Изменения»).

Важно! Пункт «Снять защиту листа» активен в том случае, если он защищен. В случае 2007 или 2010 — установлен общий доступ к рабочей книге, который нужно отменить.

Сброс пароля защищенного листа

Если прислали файл Excel, в котором лист защищен паролем и владелец недоступен или, банально, забыл пароль. Перед пользователем единственная задача — сбросить пароль, чтобы получить возможность работать с данной страницей.

Это делают:

  1. Используя надстройки.
  2. Используя архиватор и блокнот.

Находим и устанавливаем макрос, который выполняет нашу задачу.

Установка надстройки

  1. Скачанный макрос (надстройку) помещаем в папку Addins (папка макросов по умолчанию).
  2. Переходим по пути Сервис → надстройки → обзор.
  3. Выбираем нужный файл.
  4. Устанавливаем.

Запуск макроса выполняется по пути из п.2. установки макроса. Снимаем защиту посредством сброса пароля для активного листа.

После запуска создается ощущение, что программа зависла, потому что процесс занимает около двух минут, после получим сообщение.

Использование архиватора и блокнота

Важно! Данный способ возможен только для файлов с расширением xlsx. Т.е. файлы, созданные в версиях, позже 2003. Либо можно пересохранить файл в более новой версии.

Порядок действий:

  1. Присваиваем файлу расширение Zip.
  2. Открываем имеющимся архиватором, например, WinRar.
  3. Среди файлов архива будет sheet1.xml. Откроем его любым текстовым редактором (например блокнотом).
  4. Находим текст sheetProtection password.
  5. Удаляем значение password (то, что стоит в кавычках).
  6. Либо используем данное значение в качестве пароля защиты листа.

Если советы статьи не помогли вам или у вас есть вопрос по Windows или продуктам Microsoft напишите нам. Вместе мы постараемся найти ответ.

geekon.media

Как снять защиту с файла Эксель

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

excelvba.ru

Снять защиту с листов или книги Excel

Снять защиту с листов или книги Excel

Краткое описание

Макрос позволяет легко и быстро восстановить доступ к листам или книге Excel. Просто нажмите кнопку, выберите нужный файл и макрос создаст копию указанного файла, но уже без установленного ранее пароля.

Подробное описание

Иногда бывают ситуации, когда работая с тем или иным файлом Excel, мы устанавливаем защиту (пароль) на листы в файле или на саму книгу. Если пароль простой, используется для большинства документов или где-то записан, то разумеется, разблокировка не вызывает проблем. Но что делать, если запись о пароле утеряна, пароль устанавливался давно или мы не можем его вспомнить?

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

  1. на всех листах книги (если таковые были установлены)
  2. в самой книге (если включалась защита на файл excel)

Для использования макроса достаточно:

а) нажать кнопку "Снять защиту с файла" 

 

б) в появившемся окне подтвердить, что пароль удаляется именно в вашем файле

 

в) после нажатия кнопки "OK", в диалоговом окне выбрать файл Excel, в котором требуется снять защиту

 

Результатом работы макроса будет новый файл (точная копия вашего указанного), но уже без пароля на листах и в книге. Сохраняется данный файл в папке с исходным (выбранным) вами файлом и в названии данного файла присутствует текст "NotProtectionFile". Как пример:

 

 

Макрос успешно снимает защиту в файлах Excel с расширением xlsx и xlsm. Версия Excel (2007, 2010, 2013) значения не имеет. Данным макросом также успешно можно сбросить пароли с файлов xls и xlsb, если нужные файлы предварительно пересохранить в поддерживаемый макросом формат (xlsx/xlsm).

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

И еще раз напоминаем. Восстановление собственных паролей - это легальная операция. Взлом паролей чужих файлов без явного согласия их владельца запрещен.

excelstore.pro

Как снять защиту с листа 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.

Благодарности

При написании статьи были использованы следующие источники:

  1. http://dplanet.info/kak-snyat-zashhitu-lista-excel/

Поделись этой страницей с друзьями!

moonback.ru

Правильная защита макросом

В большинстве случаев защита макросом, которую я встречаю во множестве проектов, выглядит следующим образом:

Worksheets("Лист1").Unprotect Password:="123" 'тут макрос делает действия Worksheets("Лист1").Protect Password:="123"

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

Есть гораздо более легкий и красивый способ решить задачу.

Нажмите Alt+F11, чтобы попасть в редактор Visual Basic. Затем найдите в левом верхнем углу в окне Project Explorer (если его не видно, то нажмите Ctrl+R) модуль ЭтаКнига (ThisWorkbook) и откройте двойным щелчком:

 

Скопируйте туда этот код:

Private Sub Workbook_Open() 'включаем защиту первого листа для пользователя, но не макроса Worksheets("Лист1").Protect Password:="123", UserInterfaceOnly:=True 'второй лист защищаем аналогично, но с возможностью пользоваться группировкой Worksheets("Лист2").EnableOutlining = True Worksheets("Лист2").Protect Password:="555", UserInterfaceOnly:=True End Sub

Эта процедура будет автоматически запускаться при открытии файла и ставить защиту на заданные листы книги. Причем параметр UserInterfaceOnly, который мы дополнительно ввели, указывает Excel, что защита не должна распространяться на действия выполняемые макросом, а только на операции пользователя. Для второго листа все еще веселее - строка с параметром EnableOutlining разрешает пользоваться группировкой (символы плюс-минус для сворачивания-разворачивания строк и столбцов) на защищенном листе.

Всего три строчки кода, зато как удобно!

Ссылки по теме

 

www.planetaexcel.ru