Skip to content
Как снять защиту со всех листов
На чтение 2 мин. Просмотров 5.3k.
Что делает макрос: Бывает необходимость снять защиту со всех листов, обычно это делается вручную. Данный макрос автоматизирует это.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Код макроса
- Как использовать
Как макрос работает
Этот макрос проходит цикл листов и использует аргумент пароль для снятия защиты листа.
Код макроса
Sub SnyatZaschituOdinParol() 'Шаг 1: Объявляем переменные Dim ws As Worksheet 'Шаг 2: Запускаем цикл через все рабочие листы For Each ws In ActiveWorkbook.Worksheets 'Шаг 3: Цикл до следующего рабочего листа ws.UnProtect Password:="КРАСНЫЙ" Next ws End Sub
Как этот код работает
- Шаг 1 объявляет объект под названием WS. Это создает контейнер памяти для каждого рабочего листа.
- Шаг 2 запускается цикл через все рабочие листы в этой книге.
- Шаг 3 снимает защиту активного листа, обеспечивая пароль по мере необходимости, а затем возвращается обратно, чтобы получить рабочий лист.
Очевидно, что макрос будет работать, если все рабочие листы, которые должны быть незащищенными имеют один и тот же пароль. Если это не так, то вам нужно явно снять защиту каждый лист с соответствующим паролем.
Код макроса
Sub SnyatZaschituRaznieParoli() Sheets("Лист1").UnProtect Password:="КРАСНЫЙ" Sheets("Лист2").UnProtect Password:="СИНИЙ" Sheets("Лист3").UnProtect Password:="ЖЕЛТЫЙ" Sheets("Лист4").UnProtect Password:="ЗЕЛЕНЫЙ" End Sub
Как использовать
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши personal.xlb в окне Project.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
Макрос предназначен для программного подбора и снятия защиты с листа 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.
Благодарности
При написании статьи были использованы следующие источники:
- http://dplanet.info/kak-snyat-zashhitu-lista-excel/
The common ways of locking or hiding tabs in a workbook can be easy to reverse for many users. Using VBA code to do this is considered a better way to do this, if you are familiar with macros. In this article, we’re going to show you how to ‘un-protect’ protected worksheets and how to protect un-protected worksheets using VBA.
Worksheets are objects in the worksheet collection of a workbook, and they have Protect and Unprotect methods. These methods determine the protected status of a worksheet as the name suggests. Both methods can also accept optional arguments. The first argument is the password. By setting a string into the parameter argument, you can lock your worksheets with a password. Below is a breakdown.
You can use this in two ways:
- Module
- Immediate Window
In the Module method, you need to add the module into the workbook or the add-in file. Copy and paste the code into the module to run it. The main advantage of the module method is that it allows saving the code in the file, so that it can be used again later. Furthermore, the subroutines in modules can be used by icons in the menu ribbons or keyboard shortcuts. Remember to save your file in either XLSM or XLAM format to save your VBA code.
The Immediate Window method, on the other hand, is essentially a quick and dirty method where you can simply copy and paste the code into the Immediate Window, and press the Enter key to run it. Unfortunately, any code you use in the Immediate Window will not be saved. Also note that icons and keyboard shortcuts will not be available.
Protect a worksheet
Module Version:
Sub ProtectActiveWorksheet() ActiveSheet.Protect "pass" End Sub
Immediate Window version:
ActiveSheet.Protect "pass"
Unprotect a worksheet
Module Version:
Sub UnprotectActiveWorksheet() ActiveSheet.Unprotect "pass" End Sub
Immediate Window version:
ActiveSheet.Unprotect «pass»
Protect all worksheets
Module Version:
Sub ProtectAllWorksheets() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets sh.Protect "pass" Next sh End Sub
Immediate Window version:
For Each sh In ActiveWorkbook.Worksheets: sh.Protect "pass": Next sh
Unprotect all worksheets
Module Version:
Sub ProtectAllWorksheets() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets sh.Unprotect "pass" Next sh End Sub
Immediate Window version:
For Each sh In ActiveWorkbook.Worksheets: sh.Unprotect "pass": Next sh
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Если есть необходимость снять защиту со всех листов, то данный макрос автоматизирует это. Этот макрос проходит цикл листов и использует аргумент Password для снятия защиты листа.
Ссылка на это место страницы:
#formula
Код макроса для одного пароля
Sub
SnyatZaschituOdinParol()
Dim
ws
As
Worksheet
For
Each
ws
In
ActiveWorkbook.Worksheets
ws.UnProtect Password:=
"КРАСНЫЙ"
Next
ws
End
Sub
Код макроса для разных паролей
Sub
SnyatZaschituRaznieParoli()
Sheets(
"Нижняя Тавда"
).UnProtect Password:=
"КРАСНЫЙ"
Sheets(
"Антипино"
).UnProtect Password:=
"СИНИЙ"
Sheets(
"Упорово"
).UnProtect Password:=
"ЖЕЛТЫЙ"
Sheets(
"Винзили"
).UnProtect Password:=
"ЗЕЛЕНЫЙ"
End
Sub
Ссылка на это место страницы:
#kak
1. Шаг 1 объявляет объект под названием WS. Это создает контейнер памяти для каждого рабочего листа.
2. Шаг 2 запускается цикл через все рабочие листы в этой книге.
3. Шаг 3 снимает защиту активного листа, используя пароль, возвращается на шаг 2 для других листов книги.
Очевидно, что макрос будет работать, если все рабочие листы, которые должны быть незащищенными имеют один и тот же пароль. Если это не так, то вам нужно использовать свой пароль для каждого листа.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях: