Académique Documents
Professionnel Documents
Culture Documents
Cualquiera de nosotros, a pesar de tener la mejor memoria del mundo, hemos olvidado la
contrasea de una hoja de Excel.
Tenemos un archivo cualquiera en Excel, por ejemplo este de la figura
Y se nos ha creado un contratiempo importante, porque en ese momento tenamos la urgencia
mayor de nuestra vida.
Pues todo esto es una minscula parte de nuestros problemas.
Lo que voy a ensearos es la manera en que no sirve para nada poner una contrasea a una hoja
de Excel, es triste pero esta es la otra parte de la moneda.
Lo voy a explicar, como siempre, para que puedan entender los principiantes.
Tenemos el archivo siguiente
Esta hoja est protegida con una contrasea que la hemos olvidado. Pero os lo digo en secreto
que la contrasea es:
1Disco Duro Petado. En mi Cabeza [{***++--**//]}
Podemos ver que puede ser difcil de sacarla.
Marcas desde "Attribute" hasta "End Sub" y lo copias en el portapapeles (botn derecho y copiar).
Abres el Bloc de Notas (Inicio ... Todos los Programas ... Accesorios ... Bloc de Notas)
Botn derecho y Pegar, ya est casi.
Ahora slo nos queda Salvarlo como, en Archivo ... Guardar como.
Lo guardas donde quieras y le pones el nombre que quieras pero con extensin "bas".
En Tipo debemos seleccionar Todos los Archivos.
Yo lo he llamado "SacarContrasenaHojaExcel.bas" (sin comillas).
Lo escribes a mano como se ve en la figura.
Ya tenemos hecha la parte ms complicada del asunto, ahora slo queda emplear este archivo en
la hoja de Excel.
Para ello, en la hoja de Excel, Herramientas ... Macro ... Editor de Visual Basic
Ahora tenemos que Importar el archivo que hemos creado con el famoso script. Vamos a
Archivo ... Importar archivo ...
Buscamos la carpeta donde lo hemos guardado, lo pinchamos para marcarlo y Abrir
En este momento ya tenemos el famoso archivo a nuestra disposicin dentro de la hoja de excel
(podemos acceder a l).
Ahora cerramos Visual Basic y nos presentamos en nuestra hoja de Excel.
Vamos a Herramientas ... Macro ... Macros...
MsgBox Application.Substitute(MSGPWORDFOUND1, _
"$$", PWord1), vbInformation, HEADER
Exit Do 'Bypass all for...nexts
End If
End With
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
If WinTag And Not ShTag Then
MsgBox MSGONLYONE, vbInformation, HEADER
Exit Sub
End If
On Error Resume Next
For Each w1 In Worksheets
'Attempt clearance with PWord1
w1.Unprotect PWord1
Next w1
On Error GoTo 0
ShTag = False
For Each w1 In Worksheets
'Checks for all clear ShTag triggered to 1 if not.
ShTag = ShTag Or w1.ProtectContents
Next w1
If ShTag Then
For Each w1 In Worksheets
With w1
If .ProtectContents Then
On Error Resume Next
Do
'Dummy do loop
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
.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 Not .ProtectContents 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)
MsgBox Application.Substitute(MSGPWORDFOUND2, _
"$$", PWord1), vbInformation, HEADER
'leverage finding Pword by trying on other sheets
For Each w2 In Worksheets
w2.Unprotect PWord1
Next w2
Exit Do 'Bypass all for...nexts
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
End With
Next w1
End If
MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK, vbInformation, HEADER
End Sub
Sub breakit()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n 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