Как снять защиту с VBAProject в Excel
Поставили пароль на VBAProject и забыли его? Есть файл с макросами, хотите в них разобраться, но проект защищён? Не беда, сломаем за 5 минут.
Пошаговая инструкция:
1. Закройте файл, сделайте его копию на случай Fuck Up.
2. Измените расширение файла .xlsm на .zip (пкм Переименовать или F2):
3. Откройте zip файл, найдите папку xl и в ней файл vbaProject.bin:
4. Перетащите файл vbaProject.bin из архива:
5. Откройте его с помощью Notepad++ :
6. При помощи поиска (Ctrl+F) найдите строку DPB и замените в ней букву B на любую другую, сохраните и закройте файл:
7. Перенесите обновленный файл vbaProject.bin обратно в архив, закройте архив.
8. Измените расширение файла .zip в .xlsm.
9. Откройте файл, в появившемся диалоговом окне нажмите Да:
10. Откройте Visual Basic (Alt+F11) или вкладка Разработчик ► Visual Basic, в появившемся диалоговом окне нажмите Ок:
11. Окне редактора выберите Tools ► VBAProject Properties...:
12. На вкладке Protection уберите галку Lock project for viewing и сохраните файл:
Готово!
Не сработало? Поможет бесплатная надстройка MACROTools VBA Excel, а надстройка EXCELTools автоматизирует ваши рутинные и монотонные операции в MS Excel.
При желании проект можно поддержать рублем.
Хотите научиться самостоятельно писать макросы и разбираться в VBA, но не знаете с чего начать? Лучший канал на YouTube по этой теме:












упрощу
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