Макрос предназначен для программного подбора и снятия защиты с листа 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/
Apos, можно заблокировать лист так, чтобы на макросы эта блокировка не распространялась — то есть для пользователь ничего не сможет поменять, а у макроса будут права на изменение ячеек (даже заблокированных).
Включается эта блокировка макросом:
Код |
---|
Sheet1.Protect UserInterfaceOnly:=True |
Соответственно, в макросе можно задать и другие параметры блокировки листа — например, разрешить пользователю форматировать ячейки или пользоваться автофильтром с сортировкой. При этом пользователь изменить заблокированные ячейки не сможет, а макрос не будет на этом спотыкаться и весьма успешно будет все менять
Цитата | ||
---|---|---|
Apos написал:
|
Пардон, конечно, но зачем вырезать гланды через.. кхм..? А если пользователь поменяет название листа, то Ваш макрос перестанет работать…
Заходите в VBA, там ищите окно Properties: если его нет — нажимаете F4. В дереве проекта выбираете тот лист, с которым работаете — в окно свойств загружаются все свойства листа, которые можно поменять во время разработки. Самое первое свойство — (Name) — это имя листа, которое может использоваться в коде (например, Sheet1 как в моем примере выше). Это имя можно изменить только во время разработки, во время выполнения у этого свойства включается атрибут read-only.
И, соответственно, по этому имени и можете обращаться к данному листу; после чего Вас уже не будет интересовать как этот лист называется и как переименовал его пользователь: Excel будет точно знать, что действия нужно выполнять именно с этим листом.
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
1 |
|
18.10.2019, 21:39. Показов 12065. Ответов 22
Как снять защиту с листа excel 2016 в VBA
0 |
Заблокирован |
||||
18.10.2019, 21:44 |
2 |
|||
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
19.10.2019, 08:01 |
3 |
igleb75, привет ! в моей надстройке после выходных будет данный инструмент удалить пароли vba и excel
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
19.10.2019, 10:27 [ТС] |
4 |
Спасибо Вам за информацию, буду ждать Вашей надстройки.
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
19.10.2019, 10:37 |
5 |
igleb75, попробуйте старым инструментом пока я может сегодня или завтра выложу новый Добавлено через 56 секунд
0 |
igleb75 1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
||||||||
19.10.2019, 13:00 [ТС] |
6 |
|||||||
Сегодня у меня весь день на пробы по данному занятию. Добавлено через 2 часа 18 минут
Результат нулевой. Добавлено через 3 минуты
0 |
2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,149 |
|
19.10.2019, 13:20 |
7 |
igleb75,
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
19.10.2019, 16:20 |
8 |
igleb75, Привет обновил надстройку можешь скачивать, снимает пароли со всех версий Excel Добавлено через 1 минуту используйте снять пароли удалить XML
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
19.10.2019, 20:02 [ТС] |
9 |
Сколько по времени он может или должен снимать пароль с листа?
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
20.10.2019, 07:11 |
10 |
igleb75, привет! вы используете снять пароли удалить XML
0 |
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
20.10.2019, 08:16 |
11 |
снять пароли удалить XML А если там нет xml ? »»»»»»»»» Получил вот это (см.скрин). Охота «взглянуть» пропала. Миниатюры
1 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
20.10.2019, 08:45 |
12 |
SoftIce, привет! проблема) у меня не возникает такой ошибки, сейчас попробую заменить файл проверите ? если нет XML это может быть с файлом формата *.xlsb, тогда нужно его сохранить в другом формате в теории Добавлено через 1 минуту Добавлено через 8 минут Добавлено через 8 минут
0 |
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
20.10.2019, 09:00 |
13 |
Обновил)! проверте) Проверил. Миниатюры
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
20.10.2019, 09:02 [ТС] |
14 |
А файлы xlsb он вскроет?
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
20.10.2019, 09:07 |
15 |
igleb75, нет, там нет XLM, но вы можете сохранить файл как xlsm, после удаления паролей можно пересохранить обратно
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
20.10.2019, 09:09 [ТС] |
16 |
попробую.
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
20.10.2019, 09:10 |
17 |
igleb75, я сейчас файл надстройки обновил раньше был не рабочий файл Добавлено через 1 минуту
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
20.10.2019, 09:13 [ТС] |
18 |
Нет он нормально открывается, работает но есть ограничения и стоит защита листа.
0 |
208 / 183 / 43 Регистрация: 02.08.2019 Сообщений: 586 Записей в блоге: 23 |
|
20.10.2019, 09:28 |
19 |
igleb75, получилось снять пароль?
0 |
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
20.10.2019, 09:31 [ТС] |
20 |
Переименовал в xml и запустил. Теперь жду результата уже минут 7 как висит, думает наверно.
0 |
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.
- Введите или вставьте код во вновь созданном модуле.