Снятие защиты листа в excel макросы

Макрос предназначен для программного подбора и снятия защиты с листа Excel.

Подобранный пароль не совпадает с установленным — но, тем не менее, защита снимается.

Sub Unlock_Excel_Worksheet()
    t = Timer
    If UnlockSheet(ActiveSheet) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту листа", vbCritical
    End If
End Sub
Function UnlockSheet(ByRef sh As Worksheet) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            sh.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockSheet = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

Аналогичный макрос снимает защиту книги Excel:

Sub Unlock_Excel_Workbook() ' снятие защиты книги Excel
    t = Timer
    If UnlockWorkbook(ActiveWorkbook) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту книги", vbCritical
    End If
End Sub
Function UnlockWorkbook(ByRef wb As Workbook) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            wb.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockWorkbook = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

Время от времени ко мне попадают файлы Excel страницы которых защищены от изменений. Авторы таким способом пытаются защитить документ от внесения изменений. Если бы у вас был пароль, то вы могли поступить как на рисунке ниже.

Но эта статья для тех у кого пароля нет, а снять защиту с листа Excel очень надо.

Как снять защиту от редактирования с листа книги Excel с помощью офисного пакета программ 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/

Apos, можно заблокировать лист так, чтобы на макросы эта блокировка не распространялась — то есть для пользователь ничего не сможет поменять, а у макроса будут права на изменение ячеек (даже заблокированных).

Включается эта блокировка макросом:

Код
Sheet1.Protect UserInterfaceOnly:=True

Соответственно, в макросе можно задать и другие параметры блокировки листа — например, разрешить пользователю форматировать ячейки или пользоваться автофильтром с сортировкой. При этом пользователь изменить заблокированные ячейки не сможет, а макрос не будет на этом спотыкаться и весьма успешно будет все менять ;-)

Цитата
Apos написал:

Код
Sheets("название_листа").Select
ActiveSheet.Unprotect

Пардон, конечно, но зачем вырезать гланды через.. кхм..? А если пользователь поменяет название листа, то Ваш макрос перестанет работать…

Заходите в VBA, там ищите окно Properties: если его нет — нажимаете F4. В дереве проекта выбираете тот лист, с которым работаете — в окно свойств загружаются все свойства листа, которые можно поменять во время разработки. Самое первое свойство — (Name) — это имя листа, которое может использоваться в коде (например, Sheet1 как в моем примере выше). Это имя можно изменить только во время разработки, во время выполнения у этого свойства включается атрибут read-only.

И, соответственно, по этому имени и можете обращаться к данному листу; после чего Вас уже не будет интересовать как этот лист называется и как переименовал его пользователь: Excel будет точно знать, что действия нужно выполнять именно с этим листом.

Skip to content

Как снять защиту со всех листов

На чтение 2 мин. Просмотров 5.3k.

Что делает макрос: Бывает необходимость снять защиту со всех листов, обычно это делается вручную. Данный макрос автоматизирует это.

Содержание

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

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

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

Код макроса

Sub SnyatZaschituOdinParol()
'Шаг 1: Объявляем переменные
Dim ws As Worksheet
'Шаг 2: Запускаем цикл через все рабочие листы
For Each ws In ActiveWorkbook.Worksheets
'Шаг 3: Цикл до следующего рабочего листа
ws.UnProtect Password:="КРАСНЫЙ"
Next ws
End Sub

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

  1. Шаг 1 объявляет объект под названием WS. Это создает контейнер памяти для каждого рабочего листа.
  2. Шаг 2 запускается цикл через все рабочие листы в этой книге.
  3. Шаг 3 снимает защиту активного листа, обеспечивая пароль по мере необходимости, а затем возвращается обратно, чтобы получить рабочий лист.

Очевидно, что макрос будет работать, если все рабочие листы, которые должны быть незащищенными имеют один и тот же пароль. Если это не так, то вам нужно явно снять защиту каждый лист с соответствующим паролем.

Код макроса

Sub SnyatZaschituRaznieParoli()
Sheets("Лист1").UnProtect Password:="КРАСНЫЙ"
Sheets("Лист2").UnProtect Password:="СИНИЙ"
Sheets("Лист3").UnProtect Password:="ЖЕЛТЫЙ"
Sheets("Лист4").UnProtect Password:="ЗЕЛЕНЫЙ"
End Sub

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши personal.xlb в окне Project.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

Перейти к содержимому

В данной статье описаны несколько способов разблокировки (снятия защиты, пароля) в запароленном  файле  «Эксель» и приведен макрос подбора пароля к файлу.

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

Способ номер 1.  Использование бесплатной офисной программы Open Office Calc

Это один из самых простых способов снятия забытого пароля с файла.

Что нужно делать:

  1. Скачать и установить бесплатную программу  Open Office.
  2. Открыть запароленный файл в программе Open Office Calc.
  3. Перейти во вкладку «Сервис»
  4. Далее выбрать пункт «Защитить документ»
  5. Снять флажок (галочку) с пункта с названием защищенного листа.
    Снять пароль в Open Office
    Снять пароль в Open Office
  6. Пароль с файла будет снят.
  7. Теперь остается только сохранить незапароленный файл и открыть его в «Excel», при необходимости.

Способ номер 2. Использование программы-архиватора для снятия пароля с листа «Excel»

Что нужно делать:

  1. Установить программу для открытия архивов и архивирования документов, если таковая не установлена на Вашем ПК. Например WinRar или 7Zip ;
    7Zip man
    7Zip man
  2. Запустить программу архиватор ;
  3. Сохранить защищенный файл в формате .xlsx ;
    Сохранить как xlsx
    Сохранить как xlsx
  4. Открыть защищенный документ в этой программе, как архив ;
  5. Далее перейти в папку архива Название файла.xlsxxlworksheets ;
    Снятие пароля через архив
    Снятие пароля через архив
  6. Открыть интересующий вас лист для редактирования ;
  7. Найдите фрагмент кода начинающийся с «<sheetProtection password=» и заканчивающийся «/>». Удалите его ;
    Удаление строки с паролем
    Удаление строки с паролем
  8. Сохраните архив с измененным файлом ;
  9. Закройте программу-архиватор и откройте файл в «Excel» ;
  10. Защита листа снята.

Способ номер 3. Макрос VBA «Excel» для подбора пароля и снятия защиты листа.

Этот способ немного сложнее, так как от Вас потребуются хотя бы начальные знания в написании макросов «Excel».

Как пишется простейший макрос в «Excel» Вы можете посмотреть на странице сайта по ссылке:

Как написать простой макрос в программе Excel

Если вы знакомы с написанием макросов VBA , то для разблокировки файла защищенного паролем Вам следует выполнить следующие действия:

  1. Открыть редактор макросов во вкладке разработчик.
  2. Записать следующий код макроса:
  • Sub podbor_ruexcel()
  • Dim E1, E2, E3, E4, E5, E6, i, j, k, l, m, n As Integer
  • Dim ruexcel As String
  • Dim t!
  • 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 E1 = 65 To 66
  • For E2 = 65 To 66: For E3 = 65 To 66: For E4 = 65 To 66
  • For E5 = 65 To 66: For E6 = 65 To 66
  • ruexcel = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(E1) & Chr(E2) & Chr(E3) & Chr(E4) & Chr(E5) & Chr(E6)
  • For n = 32 To 126
  • Unprotect ruexcel & Chr(n)
  • MsgBox «Пароль снят » & 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
  1. Запустить полученный макрос.
  2. После выполнения макроса пароль с листа «Excel» будет снят.

Результат редактирования макроса:

Макрос подбора пароля к листу Excel в редакторе

Макрос подбора пароля к листу Excel в редакторе

Понравилась статья? Поделить с друзьями:
  • Сноски в списке литературы word
  • Снятие блокировки листа excel
  • Сноски в конец документа word
  • Сноски в квадратных скобках word
  • Снятие блокировки документа word