Apos, можно заблокировать лист так, чтобы на макросы эта блокировка не распространялась — то есть для пользователь ничего не сможет поменять, а у макроса будут права на изменение ячеек (даже заблокированных).
Включается эта блокировка макросом:
Код |
---|
Sheet1.Protect UserInterfaceOnly:=True |
Соответственно, в макросе можно задать и другие параметры блокировки листа — например, разрешить пользователю форматировать ячейки или пользоваться автофильтром с сортировкой. При этом пользователь изменить заблокированные ячейки не сможет, а макрос не будет на этом спотыкаться и весьма успешно будет все менять
Цитата | ||
---|---|---|
Apos написал:
|
Пардон, конечно, но зачем вырезать гланды через.. кхм..? А если пользователь поменяет название листа, то Ваш макрос перестанет работать…
Заходите в VBA, там ищите окно Properties: если его нет — нажимаете F4. В дереве проекта выбираете тот лист, с которым работаете — в окно свойств загружаются все свойства листа, которые можно поменять во время разработки. Самое первое свойство — (Name) — это имя листа, которое может использоваться в коде (например, Sheet1 как в моем примере выше). Это имя можно изменить только во время разработки, во время выполнения у этого свойства включается атрибут read-only.
И, соответственно, по этому имени и можете обращаться к данному листу; после чего Вас уже не будет интересовать как этот лист называется и как переименовал его пользователь: 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
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
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.
- Введите или вставьте код во вновь созданном модуле.
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 |