Bloquear libros de excel con una macro

Tengo un carpeta con 500 a más libros y cada libro con muchas hojas, lo que deseo es bloquear todas las hojas de cada libro ( ya tengo la macro que hace ese proceso en 1 libro) como tengo tantos libros abrir 1 por 1 y aplicar la macro es un poco demoroso me gustaría saber alguna solución para este caso

Respuesta
1

Te anexo la macro. Cambia la ruta por tu carpeta y "abc" por el password que desees.

Sub Macro7()
'   Por Dante Amor
'   Bloquear todas las celdas de todas las hojas y proteger las hojas
'
    Application.ScreenUpdating = False
    ruta = "C:\trabajo\libros\"
    arch = Dir(ruta & "*.xls*")
    On Error Resume Next
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        For Each hoja In l2.Sheets
            hoja.Unprotect "abc"
            hoja.Cells.Locked = True
            hoja.Protect "abc", DrawingObjects:=True, Contents:=True, Scenarios:=True
        Next
        l2.Close False
        arch = Dir()
    Loop
    MsgBox "Fin"
End Sub

[Sal u dos

Una consulta el 12 a que hace referencia

Tengo esta línea:

        Set l2 = Workbooks.Open(ruta & arch)

En el objeto L2 se establece el abrir un Libro.

Después de con L2. Close cierro el Libro

como ejecutó su macro la intente abrir desde 1 Excel y ejecutar y no funcionó., coloque la ruta como es adecuado y abrí un libro de esa misma ruta y no funciono

Solamente pon la macro en un libro, guarda el libro en una ruta diferente como archivo de macros. Ejecuta la macro.

La macro abrirá cada archivo que se encuentre en la ruta y bloqueará cada hoja.

Pon tu macro modificada para revisarla.

Sub Bloqueartodo()
Application.ScreenUpdating = False
ruta = "I:\Lab\cal\registro\2018\Doc\"
arch = Dir(ruta & "*.xls*")
On Error Resume Next
Do While arch <> ""
Set l2 = Workbooks.Open(ruta & arch)
For Each hoja In l2.Sheets
hoja.Unprotect "123"
hoja.Cells.Locked = True
hoja.Protect "123", DrawingObjects:=True, COntents:=True, Scenarios:=True
Next
l2.Close False
arch = Dir()
Loop
MsgBox "Fin"
End Sub

lo ejecute con otro Excel de otra carpeta y demoró un poco en reaccionar y finalizó pero fui a la carpeta y no hubo ningún  cambio en las hojas no se protegieron como debían  

Quita esta línea

On Error Resume Next

Ejecuta la macro, dime qué error te envía y en cuál línea de la macro se detiene

Cambia esta línea

l2.Close False

Por esta:

l2.Close True

[Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas