jueves, 21 de junio de 2012

Otra forma de desproteger una hoja

A partir de la versión 2007, Excel utiliza un sistema de archivos denominado Open XML. Los libros contienen paquetes en forma de archivos XML comprimidos en formato ZIP especial. Si sustituimos la extensión de un fichero Excel por .ZIP, podremos ver los documentos XML que componen el libro. Además, podremos manipular estos documentos para, por ejemplo, eliminar la protección de una hoja. Aquí enlazamos con el artículo Protección mejorada donde se planteó este problema y quedó pendiente de solución.

El fichero utilizado para el ejemplo será "SE99-Palíndromo.xlsm", que si se descarga desde aquí se comprobará que el rango C3:C19 está protegido con contraseña y que se ha puesto otra contraseña en Propiedades de VBAProject. Desconocemos ambas contraseña y nuestro objetivo es desproteger la hoja.

El primer paso consiste en sustituir la extensión del fichero por .ZIP. Windows pide confirmación.
Ahora, descomprimimos el fichero "SE99-Palíndromo.ZIP". Obtendremos varias carpetas, subcarpetas y ficheros.

Abrimos la carpeta "xl". Dentro hay más carpetas y ficheros.


Abrimos la carpeta "worksheets". En el interior hay tantos ficheros XML como hojas tiene el libro. En nuestro caso sólo hay uno.


Con el Bloc de notas de Windows, abrimos el fichero "sheet1.xml".


Con Edición + Buscar, buscamos la palabra "password".


Seleccionamos y borramos: <sheetProtection password="86C7" sheet="1" objects="1" scenarios="1" selectLockedCells="1"/>


Guardamos el fichero (Archivo + Guardar) y cerramos el Bloc de notas. El fichero "sheet1.xml" ya no tiene contraseña.

A continuación, volvemos a comprimir todos los ficheros y carpetas con WinZip. De este modo, obtendremos un nuevo fichero "SE99-Palíndromo.ZIP" modificado. Le cambiamos la extensión por .xlsm y la hoja quedará desprotegida, aunque la protección que hay en Propiedades de VBAProject permanece.

Este método también vale para libros con protección simple; es decir, libros a los que no se les ha puesto protección en Propiedades de VBAProject.

En libros de Excel 2003 el método no funciona ya que Office 2003 no usa el sistema de archivos Open XML. Sin embargo, si tenemos instalado Excel 2010 podemos resolver fácilmente el problema de la siguiente manera:
  1. Abrimos el libro con Excel 2010.
  2. Lo guardamos con extensión .xlsx (si no tiene macros) o .xlsm (si tiene macros).
  3. Quitamos la protección como se ha indicado.
  4. Volvemos a abrir el libro con Excel 2010 y lo guardamos con extensión .xls para que pueda ser abierto con Excel 2003.


12 comentarios:

  1. Javier al realizar el cambio de extensión del archivo en .xlsm a .ZIP, al intentar abrir el archivo o descomprimirlo me saca error! que puedo hacer, el error es este C:\Users\Mercattel\Downloads\SE99-Palíndromo.ZIP El archivo tiene un formato desconocido o está dañado

    ResponderEliminar
  2. Bastante bien ilustrados los ejemplos, creo que nos ayuda con esas hojas que en algún momento protegimos y no recordamos cual contraseña se uso para reutilizarlas

    Saludos

    ResponderEliminar
  3. propio brother. Me salvaste la vida. Gracias

    ResponderEliminar
  4. Excelente, funciona perfectamente en archivos donde la macro fracasó.

    ResponderEliminar
  5. Hola pues he probado y no me funciona, el libre me dice que hay un fallo y no puede recuperarlo

    ResponderEliminar
  6. En el proceso de descoprimir me bota el siguiente error "El archivo tiene un formato desconocido o está dañado"
    Pero el archivo esta 100% operativo, gracias por su ayuda

    ResponderEliminar
  7. hola Javier, me sucede que no puedo abrir un archivo *.xlsm 2007 del cual olvidé la contraseña de apertura, al igual que la de escritura. Ya intente mil y una cosas ..... podrías sugerirme algo?. Gracias Alo VG

    ResponderEliminar
  8. hola Javier, me sucede que tengo un archivo *.xlsm 2007 del cual olvidé la contraseña de apertura y escritura, con el que he intentado un sin fin de cosas, pero sin éxito. Podrías sugerirme algo al respecto?. Gracias

    ResponderEliminar
  9. te amo, lo mejor que pude aprender hoy. ojo no soy gay

    ResponderEliminar