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
Introduction: VBA Code to Unlock a Locked Excel Sheet
If you have ever forgotten a password for one of your excel worksheets you know how frustrating that can be.
The code used in this instruction is one of the simplest I’ve found. It will generate a usable code that will unlock your protected sheet.
I can’t take credit for the code as I merely found it in a moment of need (and I can not find where the site is anymore)… sooo I wont be much help if it doesn’t work for you but I’ve had success with it and thought I’d share.
Step 1: Open VBA
Open the worksheet you forget your password to.
Use Alt+F11 to enter the macro editor.
Once in VBA double click the sheet you need to unlock from the menu listing on the left.
This will open the general declarations page for the sheet.
Step 2: Cut and Paste the Code Breaker
Insert the code below in the general declarations page you have opened.
You should not have to change anything , sheet name etc… Just cut and paste.
_______________________
Sub PasswordBreaker()
‘Breaks worksheet password protection.
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
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox «One usable password is » & Chr(i) & Chr(j) & _
Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
________________________
Step 3: Run the Macro
Once the code is added run the Macro by selecting Run from the menu tab bar at the top of the VBA editor screen or simple press F5
Step 4: Use the Generated Code
The macro will return you to the worksheet you want to unprotect. An alert style box will appear with a usable code.
In the Review menu tab click Unprotect sheet.
Enter the generated code as the password and your done. Your sheet should be unlocked!
You should use this power wisely and responsibly only to unlock your own worksheets.
1 Person Made This Project!
Recommendations
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
1 / 1 / 0 Регистрация: 17.10.2019 Сообщений: 15 |
|
1 |
|
18.10.2019, 21:39. Показов 12063. Ответов 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 |