La protección de hoja en Excel no es lo mismo que cifrar el archivo entero. Si olvidaste la contraseña de Proteger hoja (Protect Sheet) en un libro que te pertenece, una técnica VBA conocida - PasswordBreaker - puede encontrar una colisión en el hash débil de 16 bits y desbloquear la hoja. El método no sirve contra contraseñas de apertura, cifrado del libro ni archivos que no tienes derecho a modificar.
Úsalo solo en tus propios libros, o cuando el propietario te pida ayuda. Eludir la protección de documentos ajenos sin permiso es ilegal.
Protección de hoja frente a cifrado de archivo
Excel tiene varias capas de «contraseña», y a menudo se confunden.
Protección de hoja limita la edición de celdas, fórmulas, filas y columnas en una hoja. Microsoft describe la función en Proteger una hoja de cálculo. Aquí la contraseña sirve para frenar cambios accidentales, no como criptografía fuerte. Históricamente el valor de control se guarda como un hash corto. Por eso un ataque de fuerza bruta por colisiones es viable.
Estructura del libro también puede protegerse (bloquear pestañas, impedir insertar o eliminar hojas). Eso sigue sin ser cifrado de archivo.
Cifrado de archivo / contraseña de apertura cifra el contenido para que no se pueda leer sin la contraseña correcta. Microsoft lo documenta aparte en Proteger un archivo de Excel. PasswordBreaker y macros similares no llegan a esa capa. Si olvidaste la contraseña de apertura, necesitas una copia sin cifrado, tu archivo de contraseñas, o la recuperación oficial para archivos propios - no la macro de hoja de este artículo.
En resumen: protección de hoja = bloqueo de edición con hash débil. Cifrado de archivo = cifrado real. Esta guía solo cubre lo primero.
Por qué funciona PasswordBreaker: colisión de hash de 16 bits
La protección clásica de hoja no compara la contraseña carácter a carácter contra una tabla de claves fuertes. Compara un hash de 16 bits de lo que escribes con el hash guardado al proteger la hoja.
Un valor de 16 bits solo tiene 65.536 resultados posibles. Muchas cadenas distintas dan el mismo número. Cuando ActiveSheet.Unprotect recibe una cadena que acierta el mismo hash, la acepta - aunque no sea la contraseña original.
PasswordBreaker lo aprovecha de forma práctica: la macro prueba combinaciones cortas hasta que ProtectContents pasa a False. Luego muestra una cadena válida. Es una colisión de hash, no «romper» cifrado AES moderno.
Es una propiedad antigua y conocida de la protección de hoja. La API VBA de desbloqueo es Worksheet.Unprotect (documentación). Cuando conoces o encuentras una contraseña aceptada (o una colisión), es la misma API que usa Excel.
Requisitos antes de empezar
- Eres el propietario del archivo, o tienes permiso escrito u oral del propietario.
- El archivo se abre sin contraseña de apertura (si no, el problema es cifrado, no protección de hoja).
- Las macros están permitidas en este libro.
- Tienes acceso al editor VBA (
Alt+F11en Windows; en Mac: Herramientas > Macro > Editor de Visual Basic, según la versión).
Haz primero una copia. La macro escribe la cadena encontrada en la celda A1 de la primera hoja. En una copia no dañas los datos de producción.
Cómo ejecutar PasswordBreaker
- Abre el archivo de Excel y activa la hoja protegida.
- Pulsa Alt+F11 para abrir el editor VBA.
- Elige Insertar > Módulo.
- Pega el código de abajo en la ventana del módulo.
- Coloca el cursor dentro de
PasswordBreakery pulsa F5 (o Ejecutar > Ejecutar Sub/UserForm). - Espera a que el cuadro de mensaje muestre una cadena usable. La hoja debería quedar desbloqueada.

Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 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)
ActiveWorkbook.Sheets(1).Select
Range("a1").FormulaR1C1 = 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
End SubQué hace el código, línea a línea
- Bucles
Foranidados construyen cadenas candidatas a partir de códigos de carácter (sobre todoA/Bal inicio, y un juego más amplio al final). - Cada candidata se envía a
ActiveSheet.Unprotect. - Cuando
ProtectContentsesFalse, se acertó el hash. La macro muestra la cadena y termina. On Error Resume Nextignora errores si un intento falla; es esperado durante la búsqueda.
La ejecución puede durar desde unos segundos hasta unos minutos, según el equipo y la versión de Excel. No necesita «encontrar» la contraseña original - solo una colisión.
Tras el desbloqueo: quita la protección bien
Cuando la hoja esté abierta, ve a Revisar > Desproteger hoja si el botón sigue activo, o vuelve a protegerla con una contraseña que recuerdes y guardes en un gestor. No confíes en que la cadena de colisión sea fácil de memorizar.
Mostrar una hoja oculta
Desbloquear la protección no es lo mismo que mostrar una hoja oculta. Si la hoja solo está oculta (no VeryHidden):
- En la pestaña Inicio, grupo Celdas, haz clic en Formato.
- En Visibilidad, elige Ocultar y mostrar, luego Mostrar.
- En el diálogo Mostrar, haz doble clic en el nombre de la hoja.
Solo puedes mostrar una hoja cada vez.
Si la hoja se ocultó con VBA mediante xlSheetVeryHidden, Mostrar no funciona. Hay que cambiar la propiedad en el editor VBA (Propiedades de la hoja), o que lo haga el propietario del libro. No asumas que PasswordBreaker arregla VeryHidden - es otro mecanismo.
Notas para Microsoft 365 y Excel reciente
Microsoft 365 y las compilaciones actuales de Excel (Windows y Mac) siguen admitiendo protección de hoja y VBA Unprotect en libros clásicos. Límites prácticos:
- Seguridad de macros. Archivos bajados de la web o del correo pueden abrirse en Vista protegida. Debes habilitar la edición y permitir macros en tu propia copia antes de que VBA se ejecute.
- Centro de confianza. Las organizaciones pueden bloquear todas las macros por directiva. Entonces TI debe permitirlas, o ejecutas la recuperación en un equipo donde tengas derechos.
- Mac. VBA existe en Excel para Mac, pero los atajos y menús difieren de Windows. La lógica de
Unprotectes la misma. - Excel en la web / móvil. El cliente web y las apps móviles no dan VBA completo. Usa Excel de escritorio.
- Bloqueos más fuertes. Flujos como IRM, etiquetas de sensibilidad o cifrado real de archivo quedan fuera de esta macro. No esperes que una colisión de hash los abra.
Si Unprotect nunca acierta y el archivo ya pidió contraseña al abrirlo, tienes cifrado de archivo - detente y usa la vía de recuperación correcta para tus archivos cifrados.
Errores habituales y límites
- Capa equivocada. Pruebas la macro en un archivo cifrado. No ayudará.
- Hoja activa incorrecta. La macro actúa sobre
ActiveSheet. Activa la pestaña correcta primero. - Proyecto VBA bloqueado. Una contraseña aparte del proyecto VBA no es protección de hoja. PasswordBreaker no la resuelve.
- Compartido / solo lectura. Guarda una copia local que puedas modificar.
- Esperar la contraseña original. El cuadro de mensaje muestra una colisión. Basta para desbloquear; no demuestra qué se escribió en 2019.
Ética y propiedad
La técnica es pública porque el hash de la protección de hoja es demasiado débil para guardar secretos. Se diseñó para evitar ediciones accidentales, no para ocultar datos a terceros.
Úsala para recuperar tus propias hojas: presupuestos antiguos, inventarios o plantillas cuyo password se perdió. No la uses contra archivos ajenos, libros robados o documentos a los que solo tienes acceso temporal. Si alguien te pide «desbloquear» un archivo sin ser el dueño, rechaza.
Para secretos que de verdad deben permanecer secretos: usa cifrado de archivo, control de acceso en SharePoint/OneDrive, o un almacén de secretos dedicado - no solo la protección de hoja.
Ejemplo práctico: contraseña olvidada en tu propio presupuesto
Heredas un .xlsx de un compañero que se fue. El archivo se abre sin preguntar. Las fórmulas se ven, pero las celdas están bloqueadas y Desproteger hoja pide una contraseña que nadie recuerda. Eso es protección de hoja.
Copias el archivo a presupuesto-copia.xlsx, permites macros, pegas PasswordBreaker, lo ejecutas en la hoja correcta, anotas la cadena de colisión, quitas la protección y guardas sin contraseña (o con una nueva en el gestor). Luego borras el módulo de la macro si ya no lo necesitas, para que el libro no cargue VBA innecesario.
Si Excel hubiera pedido contraseña al hacer doble clic en el archivo, te habrías detenido. Entonces el contenido está cifrado y este artículo no aplica.
Cuándo conviene preguntar al propietario
Algunos libros forman parte de un sistema contable, una plantilla de contrato o una biblioteca SharePoint compartida. Aunque puedas desbloquear una hoja, las normas internas pueden exigir que lo haga TI o el propietario. Documenta lo que hiciste (fecha, nombre de archivo, que era protección de hoja).
Si no tienes claro el ownership, no ejecutes la macro. Pide una exportación sin protección, o que el propietario quite la protección.
Resumen breve
- Confirma que el problema es protección de hoja, no cifrado de archivo.
- Trabaja solo en archivos propios (o autorizados); haz una copia.
- Ejecuta PasswordBreaker vía VBA para encontrar una colisión de hash de 16 bits.
- Guarda una contraseña memorable nueva - o quita la protección si no la necesitas.
- Para archivos cifrados: otro proceso, otras herramientas, el mismo requisito de propiedad.
Las páginas de Microsoft sobre protección de hoja, Worksheet.Unprotect y protección de archivo son la referencia para distinguir las capas.







