Quitar "solo lectura" para modificar hojas de Excel.

Tengo un libro de excel, el cual está de "solo lectura" para evitar que sea modificado, yo tengo la clave, pero necesito una macro para quitar el "solo lectura", realizar unos cambios (que los haría automáticamente con otra macro que ya tengo preparada) y volverse a poner como "solo lectura".

He visto en esta web lo que necesito. Concretamente es del experto Elda_vinci y la macro es:

Sub Guardar()
    Dim Contraseña As String
    Contraseña = InputBox("Contraseña: ", "Ponga la contraseña para guardar")
    If Contraseña = "PEPE" Then
        Application.DisplayAlerts = False
        ActiveWorkbook.ChangeFileAccess xlReadWrite
        ActiveWorkbook.Save
        ActiveWorkbook.ChangeFileAccess xlReadOnly
        Application.DisplayAlerts = True
    End If
End Sub

El problema es que cuando llega a "ActiveWorkbook.Save" me dice que el fichero sigue siendo de "solo lectura" aunque en la línea anterior me pide la contraseña para abrirlo. No se que pasa.

1 Respuesta

Respuesta
1

H o l a:

Te anexo otra opción.

Pon la siguiente macro en otro libro.

Sub ModificarLibroSoloLectura()
'Por.Dante Amor
    If InputBox("Contraseña: ", "Ponga la contraseña para guardar") <> "PEPE" Then
        Exit Sub
    End If
    '
    Application.DisplayAlerts = False
    ruta = ThisWorkbook.Path & "\"
    Set l2 = Workbooks.Open(ruta & "librosololectura.xlsx")
    If l2.Final Then
        'Quita sólo lectura
        l2.Final = False
    End If
    '
    'Inicio otra macro para hacer cambios
    Call OtraMacro(l2)
    '
    l2.Final = True
    l2.Close True
End Sub

Cambia en la macro "librosololectura.xlsx", por el nombre de tu libro que tienes como sólo lectura.

Lo que hace la macro es abrir el libro, quitar Sólo Lectura, llamar a la OtraMacro que hace cambios en libro, poner nuevamente Sólo Lectura, guardar y cerrar el libro.


Hola Dante

Gracias por atenderme. He puesto la macro que me has mandado y no me funciona. Lo que quiero hacer es que al pulsar un botón me borre el contenido de las hojas 2, 3 y 4. Varias cosas:

1º)  No se si me graba correctamente porque he estado mirando y cuando ejecuto la macro miro la hora a que ha sido grabada y no varía de la inicial. A medida que pasaban los minutos la he ido ejecutando y la hora de grabación debería cambiar y no cambia.

2º) No me llega a entrar en el código para que me borre las hojas 2, 3 y 4 (es lo que te comenté que iba a llamar a una segunda macro para hacer otras cosas pero al final lo he simplificado). Le pongo un punto de interrupción con F9 para que se pare y se sale de la ejecución de la rutina.

Me gustaría mandarte el fichero pero no se a que dirección enviártelo.

Un saludo

Envíame 2 archivos, uno con la macro y el otro de sólo lectura.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “rioja32” y el título de esta pregunta.

Hola Dante, acabo de enviarte los ficheros.

Esta es la macro actualizada

Sub ModificarLibroSoloLectura()
'Por.Dante Amor
    If InputBox("Contraseña: ", "Ponga la contraseña para guardar") <> "PEPE" Then
        Exit Sub
    End If
    '
    Application.DisplayAlerts = False
    ruta = ThisWorkbook.Path & "\"
    Set l2 = Workbooks.Open(ruta & "prueba5.xls")
    If l2.Final Then
        l2.Final = False    'Quita sólo lectura
    End If
    '
    l2.Sheets("Hoja2").Cells.ClearContents
    l2.Sheets("Hoja3").Cells.ClearContents
    l2.Sheets("Hoja4").Cells.ClearContents
    '
    l2.Final = True
    l2.Close True
End Sub

Hola de nuevo Dante

Yo tengo la versión 2002 de Excel. Me he descargado tus ficheros y me sigue dando el mismo fallo. Te mando unos pantallazos. Mi idea es (si es realizable por supuesto) que el propio "prueba5.xls" que tengo SIEMPRE abierto como solo lectura, autoconvertirse a escritura, borrar el contenido de las hojas, grabarse y volverse a poner como solo lectura. Todo ello dentro del "pruebas5.xls".

En tu ejemplo el "pruebas5.xls" lo tengo cerrado y tengo un segundo fichero de "solo_macro.xls" que es el que debe realizar el trabajo. En mi caso el "pruebas5.xls" está siempre abierto como solo lectura y es el que necesitaría modificar.

Un saludo y gracias de nuevo.

H o l a:

Entendí la idea, pero la versión con la que estoy trabajando es la 2007, con esta versión funciona todo lo que necesitas.

Tendrás que seguir buscando cuál es el código para la versión 2002.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas