ADS

lunedì 28 maggio 2012

Togliere protezione Excel - XLS

Oggi dovevo modificare un file XLS purtroppo bloccato in alcune sue caselle! Ho risolto utilizzando uno script in Visual Basic (VBA) copiandolo semplicemente nello spazio opportuno all'interno dello stesso Excel: Ecco come fare...
Copiate il seguente codice, da "Option Explicit" fino a "End Sub"


Option Explicit

' ALT +F11; Quindi F7; Incollare il codice ed eseguire...

Dim arr As Variant
Dim arr2(30) As Long
Sub IniziaArr2()
Dim i As Integer

arr = Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 _
, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, _
524288, 1048576, 2097152, 4194304, 8388608, 16777216, _
33554432, 67108864, 134217728, 268435456, 536870912, _
1073741824)
'valori da 2^0 a 2^30

For i = 0 To 30
arr2(i) = arr(i)
Next i
End Sub

Function decbin(dec As Long) As String
Dim i As Integer, a As Integer, bin As String
bin = "0" 'nel caso dec sia = 0
For i = 30 To 0 Step -1
If dec And arr2(i) Then
bin = ""
For a = i To 0 Step -1
Select Case dec And arr2(a)
Case 0
bin = bin & "0"
Case Else
bin = bin & "1"
End Select
Next a
Exit For
End If
Next i
decbin = bin
End Function

Sub psw2()
Dim i As Long
Dim start As Single
Dim bin As String

Call IniziaArr2
start = Timer
On Error Resume Next
i = 0
Do
i = i + 1
bin = decbin(i)
ActiveSheet.Unprotect Password:=bin
Loop While ActiveSheet.ProtectContents = True

MsgBox "La password è stata rimossa con " & _
bin & " che è il binario di " & i & _
Chr(10) & "il programma ha impiegato " & _
Timer - start & " secondi"

Debug.Print bin & " " & i
End Sub

Ora aprite il vostro file excel protetto, quindi premete ALT+F11, ora F7 ed incollate il tutto.
Andate in alto ed eseguite lo script.... Nel mio caso ci sono voluti 49 secondi per trovare il grimaldello!
Infatti la chiave trovata non è la password usata per bloccarlo ma la sua conversione eseguita da excel!!!

1 commento:

  1. perfetto, rapido e semplice! grazie mille! utilissimo per correggere degli errori quando chi ha materialmete protetto il foglio ha dimenticato la pwd, o non è rintracciabile...

    RispondiElimina