Снятие защиты с листа excel vba

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

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

Код
Sheet1.Protect UserInterfaceOnly:=True

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

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

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

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

Заходите в 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.

Code sample

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.

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

Содержание

  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 / 1 / 0

Регистрация: 17.10.2019

Сообщений: 15

1

18.10.2019, 21:39. Показов 12065. Ответов 22


Студворк — интернет-сервис помощи студентам

Как снять защиту с листа excel 2016 в VBA



0



Остап Бонд

Заблокирован

18.10.2019, 21:44

2

Visual Basic
1
ActiveSheet.Unprotect "пароль"



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 секунд
удалить пароли vba и excel



0



igleb75

1 / 1 / 0

Регистрация: 17.10.2019

Сообщений: 15

19.10.2019, 13:00

 [ТС]

6

Сегодня у меня весь день на пробы по данному занятию.

Добавлено через 2 часа 18 минут
Пробовал два этих макроса

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Password_Cracker()
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 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
    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)
        If Err Then
            Err.Clear
        Else
            MsgBox "Done in " & Format(Timer - t, "0.0 sec")
            Exit Sub
        End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
 
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Password_Cracker()
 
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
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: For n = 32 To 126
 
Kennwort = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
ActiveSheet.Unprotect Kennwort
If ActiveSheet.ProtectContents = False Then
MsgBox "Done" & vbcr & "enjoy it )"
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
 
End Sub

Результат нулевой.

Добавлено через 3 минуты
Пробовал надстройку MulTExplex и тоже безрезультатно. Голову уже сломал. Надо просто очень этот Excel файл открыть.



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 минуту
удалить пароли с листов и структуры книги excel

используйте снять пароли удалить 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
потому что другой инструмент с 2016 excel не снимет пароль



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

20.10.2019, 08:16

11

Цитата
Сообщение от art1289
Посмотреть сообщение

снять пароли удалить XML

А если там нет xml ?

»»»»»»»»»
Решил всё-таки взглянуть на этот «инструмент», хотя оно мне и не надо.

Получил вот это (см.скрин). Охота «взглянуть» пропала.

Миниатюры

Снять защиту с листа excel 2016 в VBA
 



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

Цитата
Сообщение от art1289
Посмотреть сообщение

Обновил)! проверте)

Проверил.

Миниатюры

Снять защиту с листа excel 2016 в VBA
 



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



Понравилась статья? Поделить с друзьями:
  • Сноски на литературу word
  • Снятие защиты с книги excel не зная пароль
  • Сноски в текстовом документе word
  • Снятие защиты с документа microsoft word
  • Сноски в тексте word 2013