¡Ay papá, qué papelón si se le olvida la contraseña del archivo de Excel! 😱
¿Le ha pasado que está trabajando en un archivo de Excel importante y, de repente, ¡pum!, se da cuenta de que no se acuerda de la contraseña? 🤦♂️ ¡Ave María, qué vaina tan tremenda!
¡No se deje coger desprevenido! 😤
Imagínese que necesita urgentemente consultar unos datos para una reunión y no puede acceder al archivo. 🤯 ¡Qué estrés! O peor aún, que un compañero de trabajo le pida que le comparta un archivo confidencial y usted no pueda abrirlo. 😬
¡Pero no se preocupe, que aquí le tengo la solución! 😎
En este artículo, encontrara cómo desbloquear archivos y hojas de cálculo de Excel. ¡Sí, como lo oyó! 👂 Con esta información, usted va a poder acceder a sus archivos sin importar si se le olvidó la contraseña. 🔓
¡Pero ojo! 👀 Esta información es solo para usos legítimos. 😇 No vaya a utilizarla para fines delictivos. 😈 ¡Eso no está bien! 👎y puede ser castigado segun las leyes de su pais.
Nivel 1: Desproteger Varias Hojas Usando las Herramientas Integradas de Excel
Nivel 1: Desproteger Varias Hojas Usando las Herramientas Integradas de Excel
La forma estándar de proteger o desproteger una hoja de cálculo es hacer clic en la pestaña Revisar y luego elegir Proteger Hoja. Observa que cuando la protección está habilitada, no puedes insertar filas y columnas ni editar celdas.
Para desproteger la hoja, haz clic en Desproteger Hoja. Ahora puedes insertar columnas y editar celdas nuevamente.
Pero, ¿qué pasa si necesitas desproteger varias hojas? ¿Tienes que pasar por el menú para cada una por separado? ¡No! Hay una forma más rápida que funciona en Excel 365.

- Haz clic en Archivo.
- Haz clic en Información. (n.° 1 en la captura de pantalla)
- Debajo de Proteger Libro, ahora puedes desproteger cada hoja, y puedes ver cuáles hojas aún están protegidas. (n.° 2 en la captura de pantalla)
Si bien este método es mejor, sigue siendo lento y tedioso porque tienes que desproteger cada hoja por separado. ¡Hagámoslo mejor con VBA!
Nivel 3: Eliminar la Protección de Hojas de Cálculo de Excel Sin Conocer la Contraseña (VBA Avanzado)
Nuestro proceso para eliminar la protección de Excel tiene cinco etapas. Podemos llevarlas a cabo manualmente o automatizarlas con VBA.

- Etapa 1: Elegir el libro de Excel a desbloquear.
- Etapa 2: Hacer una copia del libro como un archivo .ZIP y extraer su contenido.
- Etapa 3: Eliminar la protección del libro y la hoja de cálculo de los archivos XML extraídos.
- Etapa 4: Volver a empaquetar los archivos XML editados en un nuevo archivo .ZIP.
- Etapa 5: Limpiar los archivos temporales y convertir el archivo .ZIP de nuevo en un archivo de Excel.
Etapa 1: Elegir el Libro de Excel
En esta etapa, utilizaremos un cuadro de diálogo para seleccionar el archivo de Excel del que deseamos eliminar la protección. El código VBA se encarga de este proceso de selección, asegurando que solo se permitan archivos de Excel basados en XML (.xlsx, .xlsm, .xltx, .xltm).
Elegimos estos tipos de archivo porque siguen el formato Open XML, que almacena los datos de Excel en un formato XML estructurado dentro de un archivo ZIP.
Esto nos permite acceder y editar los archivos XML subyacentes directamente, lo que nos permite eliminar las protecciones de contraseña del libro y las hojas de cálculo. Los formatos que no son XML (por ejemplo, .xls) no utilizan esta estructura, lo que imposibilita la aplicación del mismo método.
Etapa 2: Crear un Archivo ZIP y Extraer el Contenido XML
Los archivos de Excel son en realidad archivos ZIP que contienen varios archivos XML. Para eliminar la protección, necesitamos copiar el archivo de Excel como un archivo ZIP, extraer el contenido y localizar los archivos XML que controlan la configuración de protección.
Etapa 3: Eliminar la Protección del Libro y la Hoja de Cálculo
Este es el paso crucial en el que identificamos y eliminamos los mecanismos de protección integrados en los archivos XML. Los archivos de Excel utilizan XML para almacenar datos y configuraciones, incluida la protección con contraseña.
Al editar los archivos XML apropiados, podemos eliminar la protección sin necesidad de conocer la contraseña original.
Dado que el proceso para eliminar la protección de la hoja de cálculo, la protección del libro y las contraseñas de uso compartido de archivos es similar, aplicaremos el mismo código para manejar los tres tipos de protección.
El código VBA hará lo siguiente:
- Recorrerá el archivo XML de cada hoja de cálculo en la carpeta extraída y eliminará la etiqueta
<sheetProtection>, que protege la hoja de cálculo. - Eliminará la etiqueta
<workbookProtection>del archivo XML principal del libro, que controla las protecciones estructurales, como impedir que los usuarios agreguen, eliminen o muevan hojas de cálculo. - Eliminará cualquier etiqueta
<fileSharing>que imponga restricciones a la modificación del archivo, impidiendo que los usuarios realicen cambios en el archivo a menos que conozcan la contraseña.
El código lee los archivos XML en la memoria, localiza y elimina las etiquetas de protección y vuelve a escribir el contenido limpio en los archivos XML.
Al manejar los tres tipos de protección, nos aseguramos de que el libro y todas sus hojas de cálculo se desbloqueen por completo.
Importante: VBA no puede eludir de manera confiable las contraseñas de apertura de archivos. Si necesitas mantener tus archivos más seguros, se recomienda utilizar esta opción.
Etapa 4: Volver a empaquetar los archivos XML editados en un nuevo archivo ZIP
Después de eliminar con éxito la protección de los archivos XML, necesitamos volver a ensamblar las piezas en un formato de archivo de Excel. Esta etapa implica:
- Crear un nuevo archivo ZIP vacío. Este archivo servirá como contenedor para nuestros archivos XML editados.
- Mover los archivos XML editados (incluidos el libro, la hoja de cálculo y otros componentes) de vuelta al archivo ZIP.
- Asegurarse de que todos los archivos se compriman correctamente en el archivo ZIP, de modo que cuando cambiemos el nombre del archivo ZIP de nuevo a su formato original de Excel, se abra y funcione como un libro de Excel normal.
Al volver a ensamblar primero los archivos XML editados en un nuevo archivo ZIP, nos aseguramos de que todo esté correctamente empaquetado de nuevo en el formato correcto antes de convertirlo de nuevo en un archivo de Excel en la etapa final.
Etapa 5: Limpiar los archivos temporales y convertir el archivo ZIP de nuevo en un archivo de Excel
El paso final en nuestro proceso de VBA es limpiar cualquier archivo y carpeta temporal que se haya creado durante el proceso. Esta etapa asegura que no dejemos rastros y que nuestro sistema de archivos permanezca ordenado. Y renombramos el nuevo archivo ZIP a un archivo de Excel.
- Se elimina la carpeta temporal que contiene los archivos XML extraídos.
- Se cambia el nombre del archivo ZIP final con la misma extensión que el archivo de Excel original (por ejemplo, .xlsx, .xlsm).
- Se notifica al usuario que la protección se ha eliminado correctamente y que el libro está listo para usar.
Esto completa nuestro recorrido por la eliminación de la protección de Excel. Al final de la Etapa 5, salimos con un archivo de Excel completamente desbloqueado, libre de cualquier restricción de hoja de cálculo, libro o modificación de archivos.
Aquí está el código VBA completo, que puedes copiar y pegar en tu propio libro. Recuerda usar esto de manera responsable.
Sub Remove_Excel_Protection()
' Declare variables
Dim fileDialog As fileDialog
Dim selectedFileFullName As String
Dim selectedFilePath As String
Dim selectedFileName As String
Dim selectedFileExtension As String
Dim newFileFullName As Variant
Dim newFolderName As String
Dim newZipFilePath As Variant
Dim shellApp As Object
Dim fileSystemObject As Object
Dim worksheetXmlFileName As String
Dim fileNumber As Integer
Dim fileContent As String
Dim protectionTagStartPos As Double
Dim protectionTagEndPos As Double
Dim protectionTag As String
'---STAGE 1: CHOOSE WORKBOOK---
' Open dialog box to select a file
Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
fileDialog.AllowMultiSelect = False
fileDialog.Title = "Select file to remove protection from"
If fileDialog.Show = -1 Then
selectedFileFullName = fileDialog.SelectedItems(1)
' Check if the selected file is an XML-based Excel file
selectedFileExtension = LCase(Mid(selectedFileFullName, InStrRev(selectedFileFullName, ".") + 1))
If selectedFileExtension <> "xlsx" And _
selectedFileExtension <> "xlsm" And _
selectedFileExtension <> "xltx" And _
selectedFileExtension <> "xltm" Then
MsgBox "Please select an XML-based Excel file (.xlsx, .xlsm, .xltx, .xltm).", vbExclamation
Exit Sub
End If
Else
Exit Sub
End If
' Get folder path, file extension, and file name from the selected file
selectedFilePath = Left(selectedFileFullName, InStrRev(selectedFileFullName, "\"))
selectedFileName = Mid(selectedFileFullName, Len(selectedFilePath) + 1)
selectedFileName = Left(selectedFileName, InStrRev(selectedFileName, ".") - 1)
'---STAGE 2: COPY TO NEW .ZIP FILE AND EXTRACT---
' Create a unique folder name using the current date and time
newFolderName = "Temp--" & Format(Now, "yyyy-mm-dd--hh-nn-ss")
newFileFullName = selectedFilePath & newFolderName & ".zip"
' Copy and rename the original file to a zip file with a unique name
On Error Resume Next
FileCopy selectedFileFullName, newFileFullName
If Err.Number <> 0 Then
MsgBox "Unable to copy " & selectedFileFullName & vbNewLine & _
"Check that the file is closed and try again.", vbExclamation
Exit Sub
End If
On Error GoTo 0
' Create folder to unzip the file into
newZipFilePath = selectedFilePath & newFolderName & "\"
MkDir newZipFilePath
' Extract the files into the newly created folder
Set shellApp = CreateObject("Shell.Application")
shellApp.Namespace(newZipFilePath).CopyHere shellApp.Namespace(newFileFullName).items
'---STAGE 3: REMOVE PROTECTION---
' Loop through each XML file in the \xl\worksheets folder of the unzipped file
worksheetXmlFileName = Dir(newZipFilePath & "\xl\worksheets\*.xml*")
Do While worksheetXmlFileName <> ""
' Remove WORKSHEET protection by editing Worksheet XML
Process_Xml_File newZipFilePath & "xl\worksheets\" & worksheetXmlFileName, _
"sheetProtection"
worksheetXmlFileName = Dir
Loop
' Remove WORKBOOK protection by editing Workbook XML
Process_Xml_File newZipFilePath & "xl\workbook.xml", "workbookProtection"
' Remove FILE MODIFY protection by editing Workbook XML
Process_Xml_File newZipFilePath & "xl\workbook.xml", "fileSharing"
'---STAGE 4: ADD EDITED XML FILES TO NEW .ZIP FILE---
' Create a new empty ZIP file, replacing the previously copied file
' which was a temporary renamed version of the original Excel file
Open newFileFullName For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
' Move the files into the zip file
shellApp.Namespace(newFileFullName).CopyHere _
shellApp.Namespace(newZipFilePath).items
' Wait until compressing is complete
On Error Resume Next
Do Until shellApp.Namespace(newFileFullName).items.Count = _
shellApp.Namespace(newZipFilePath).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
'---STAGE 5: CONVERT TO EXCEL AND CLEANUP
' Delete the temporary files and folders created during the subroutine
Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
fileSystemObject.DeleteFolder selectedFilePath & newFolderName
' Rename the final zip file back to an Excel file
Name newFileFullName As selectedFilePath & selectedFileName & _
"--" & Format(Now, "yyyy-mm-dd--hh-nn-ss") & "." & selectedFileExtension
' Notify the user that protection has been removed
MsgBox "The workbook and worksheet protection passwords have been removed.", vbInformation
End Sub
' Subroutine to handle reading, modifying, and saving XML files
Sub Process_Xml_File(ByVal xmlFilePath As String, ByVal tagName As String)
Dim fileNumber As Integer
Dim fileContent As String
' Step 1: Read the text of the XML file into a variable
fileNumber = FreeFile
Open xmlFilePath For Input As fileNumber
fileContent = Input(LOF(fileNumber), fileNumber)
Close fileNumber
' Step 2: Remove the protection settings from the XML content
fileContent = Remove_Protection_Tag(fileContent, tagName)
' Step 3: Write the modified content back to the XML file
fileNumber = FreeFile
Open xmlFilePath For Output As fileNumber
Print #fileNumber, fileContent
Close fileNumber
End Sub
' Function to remove protection tags from XML content
Function Remove_Protection_Tag(ByVal xmlContent As String, ByVal tagName As String) As String
Dim tagStartPos As Double
Dim tagEndPos As Double
Dim tag As String
tagStartPos = InStr(1, xmlContent, "<" & tagName)
If tagStartPos > 0 Then
tagEndPos = InStr(tagStartPos, xmlContent, "/>") + 2
tag = Mid(xmlContent, tagStartPos, tagEndPos - tagStartPos)
xmlContent = Replace(xmlContent, tag, "")
End If
Remove_Protection_Tag = xmlContent
End Function
Codigo tomado de: LAUNCH EXCEL ‘ www.launchexcel.com ‘ creditos y agradecimientos a ellos.
Fuente: Articulo con información de: www.launchexcel.com







