Sei in
Home > Microsoft & altri mondi > Rimuovere la password da un foglio Excel

Rimuovere la password da un foglio Excel

Capita di proteggere un file Excel con un password per evitare che qualcuno lo modifichi senza il nostro permesso, o semplicemente per evitare l’accesso al file ad alcuni utenti.

Diciamo che il termine protezione in questo caso viene usato impropriamente, questa password la vedrei più come un avviso di dissuasione dal leggere il contenuto del file, infatti se dimentichiamo la password usata per proteggere la nostra cartella di lavoro Excel abbiamo diverse possibilità per rimuovere la protezione.

Possiamo usare un software tipo Advanced Office Password Recovery Pro 3.10, oppure una “semplice” macro che va a fare forza sulla debolezza della protezione.

Nel web troviamo un file password.xla che possiamo scaricare ed usare in tal proposito, o seguire le istruzioni fornite da alcuni siti come Excel VBA.

Se vogliamo fare tutto autonomamente evitando programmi e macro di terzi, possiamo seguire la seguente procedura:

  1. Aprire la cartella di lavoro Excel su cui vogliamo rimuovere la protezione, ed apriamo l’editor VBA tramire la combinazione di tasti Alt+F11 oppure cliccando sul tab Sviluppo –> Visual Basic
  2. Una volta aperto l’editor VBA, andiamo su Inserisci e clicchiamo Modulo
  3. Incolliamo il codice riportato di seguito nel nuovo modulo ed eseguiamo la macro

Option Explicit

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

 

Una volta incollato il codice noterete dei punti di domanda evidenziati in rosso,  dovete a questo punto  CANCELLARE quei punti di domanda SOSTITUENDOLI con apici (le doppie virgolette) e RISCRIVERE gli altri apici con quelli corretti.
Chiaro?  No?
Esempio:
bin = “0? ‘nel caso dec sia = 0

VA RISCRITTO COSI’:

bin = “0” ‘nel caso dec sia = 0

Riscrivete anche l’apostrofo o singola virgoletta, in quanto anche questi simboli danno problemi.
Avete quasi finito, dovete solo correggere altre due righe che rimangono nere: la prima e’ la terza riga sotto la prima rossa (quella dell’esempio).
E’ semplicissima,
bin=””   RISCRIVETE entrambi gli apici

La seconda e’ la penultima riga:

Debug.Print bin & “; ” & i

RISCRIVENDO gli apici.

FINITO!

(Thanks Satured per la spiegazione dettagliata)

La macro ha tempi di esecuzione diversi in base alla password di protezione impostata sul file, una volta terminata la sua esecuzione, avete il vostro file privo di protezioni.

 


Rimuovere la password da un foglio Excel, 4.4 out of 5 based on 21 ratings
$accesspress_mag_show_footer_switch = of_get_option( 'footer_switch', '1' ); $accesspress_mag_footer_layout = of_get_option( 'footer_layout' ); $accesspress_mag_sub_footer_switch = of_get_option( 'sub_footer_switch', '1' ); $accesspress_mag_copyright_text = of_get_option( 'mag_footer_copyright' ); $accesspress_mag_copyright_symbol = of_get_option( 'copyright_symbol', '1' ); $trans_top = of_get_option( 'top_arrow', 'Top' ); if( empty( $trans_top ) ) { $trans_top = __( 'Top', 'accesspress-mag' ); } ?>