Heslo do Excelu vlastně není heslo, odhalit jej je strašně jednoduché.Heslo neslouží k zabránění vstupu, ale k nechtěnému přepsání vzorce.Další makro, které jej odhalí je toto:Sub AllInternalPasswords()Dim Mess As String, Header As StringDim Authors As String, Version As StringDim RepBack As String, AllClear As StringDim PWord1 As StringDim ShTag As Integer, WinTag As IntegerDim w1 As Integer, w2 As IntegerDim i As Integer, j As Integer, k As Integer, l As IntegerDim m As Integer, n As Integer, i1 As Integer, i2 As IntegerDim i3 As Integer, i4 As Integer, i5 As Integer, i6 As IntegerApplication.ScreenUpdating = FalseHeader = "AllInternalPasswords User Message"Authors = vbCrLf & vbCrLf & vbCrLf & "Adapted from Bob McCormick"Authors = Authors & " base code by Norman Harker."Version = vbCrLf & vbCrLf & "Version 1.0 26-Dec-2002"RepBack = vbCrLf & vbCrLf & "Please report success or "RepBack = RepBack & "failure back to newsgroup."AllClear = vbCrLf & vbCrLf & "The workbook should now"AllClear = AllClear & " be free of all password protection so"AllClear = AllClear & " make sure you:" & vbCrLf & vbCrLfAllClear = AllClear & "SAVE IT NOW!" & vbCrLf & vbCrLfAllClear = AllClear & "and also" & vbCrLf & vbCrLfAllClear = AllClear & "BACKUP!, BACKUP!!, BACKUP!!!" & vbCrLfAllClear = AllClear & vbCrLf & "Also, remember that the password"AllClear = AllClear & " was put there for a reason. Don't "AllClear = AllClear & "stuff up crucial… formulas or data."ShTag = 0: WinTag = 0If ActiveWorkbook.ProtectStructure = True Then WinTag = 1End IfIf ActiveWorkbook.ProtectWindows = True Then WinTag = 1End IfFor w1 = 1 To Worksheets.Count If Worksheets(w1).ProtectContents = True Then ShTag = 1 Exit For End IfNextIf ShTag = 0 And WinTag = 0 Then Mess = "There were no passwords on sheets, or workbook " Mess = Mess & "structure or windows." Mess = Mess & Authors & Version MsgBox Mess, vbInformation, Header Exit SubEnd IfMess = "After pressing OK button this will take some time."Mess = Mess & vbCrLf & vbCrLf & "Amount of time depends on"Mess = Mess & " how many different passwords, the passwords"Mess = Mess & " and, your computer's specification." & vbCrLfMess = Mess & vbCrLf & "Just be patient! Make me a coffee!"Mess = Mess & Authors & VersionMsgBox Mess, vbInformation, HeaderIf WinTag = 0 Then Mess = "There was no protection to workbook structure " Mess = Mess & " or windows." & vbCrLf & vbCrLf Mess = Mess & "Proceeding to unprotect sheets." Mess = Mess & Authors & Version MsgBox Mess, vbInformation, HeaderEnd IfIf WinTag = 1 Then 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 ActiveWorkbook.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 ActiveWorkbook.ProtectStructure = False Then If ActiveWorkbook.ProtectWindows = False Then PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _ Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & _ Chr(i5) & Chr(i6) & Chr(n) Mess = "You had a Worksheet Structure or Windows" Mess = Mess & " Password set." & vbCrLf & vbCrLf Mess = Mess & "The password found was: " & vbCrLf Mess = Mess & vbCrLf & PWord1 Mess = Mess & vbCrLf & vbCrLf & "Note it down for " Mess = Mess & "potential future use in other " Mess = Mess & "workbooks by same person who set this " Mess = Mess & "password." & vbCrLf & vbCrLf Mess = Mess & "Now to check and clear other passwords." Mess = Mess & Authors & Version MsgBox Mess, vbInformation, Header GoTo SheetSection End If End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: NextEnd IfSheetSection:If WinTag = 1 And ShTag = 0 Then Mess = "Only structure / windows protected with the" Mess = Mess & " password that was just found." Mess = Mess & AllClear & Authors & Version & RepBack MsgBox Mess, vbInformation, Header WinTag = 0 'Won't run on return from below. Exit SubEnd IfFor w1 = 1 To Worksheets.Count 'Attempt clearance with PWord1 If Worksheets(w1).ProtectContents = True Then On Error Resume Next Worksheets(w1).Unprotect PWord1 End IfNextShTag = 0For w1 = 1 To Worksheets.Count 'Checks for all clear ShTag triggered to 1 if not. If Worksheets(w1).ProtectContents = True Then ShTag = 1 Exit For End IfNextIf ShTag = 0 Then Mess = AllClear & Authors & Version & RepBack MsgBox Mess, vbInformation, Header Exit SubEnd IfFor w1 = 1 To Worksheets.Count If Worksheets(w1).ProtectContents = True Then 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 Worksheets(w1).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 Worksheets(w1).ProtectContents = False Then PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _ Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & _ Chr(i5) & Chr(i6) & Chr(n) Mess = "You had a Worksheet password set." & vbCrLf Mess = Mess & vbCrLf & "The password found was: " Mess = Mess & vbCrLf & vbCrLf & PWord1 Mess = Mess & vbCrLf & vbCrLf Mess = Mess & "Note it down for potential future use" Mess = Mess & " in other workbooks by same person who" Mess = Mess & " set this password." & vbCrLf & vbCrLf Mess = Mess & "Now to check and clear other passwords." Mess = Mess & Authors & Version MsgBox Mess, vbInformation, Header ShTag = 0 For w2 = 1 To Worksheets.Count If Worksheets(w2).ProtectContents = True Then ShTag = 1 End If Next If ShTag = 0 Then Mess = AllClear & Authors & Version & RepBack MsgBox Mess, vbInformation, Header Exit Sub End If GoTo SheetSection End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next End IfNextEnd Sub Ukázat celý příspěvek