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.


No hay comentarios:

Publicar un comentario