Línea en macro para proteger libro Excel además de la hoja activa

Nuevamente molestando. Es que estoy de reposo y trato de sentirme ocupado.

El asunto es que en lam macro anterior, le algo más de vida. Ahora quiero además de la protección de la hoja Copia, quiero también que proteja ese libro copia tal como lo hace protegiendo la Hoja.

'Sacada de la plantilla Lista Repuestos
Sub guardar_Copia() 'PARA GUARDAR COMO XLSX
'Por.Dante Amor http://www.todoexpertos. com/preguntas/6fxnalqm9tyxkxdd/ en-macro-excel-copiar-el-rango-en-ves-de-la-hoja ?selectedanswerid=6g395i5pqbj6ipxt
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With ThisWorkbook.Sheets(1)
    Set h1 = ActiveSheet
'Nombre para el archivo
    nbr = Ini(Quitar(.Range("E8"))) & "_" & h1.Name & " " & .Range("J8") & " " & .Range("G9") & " " & .Range("K9").Value
'nombre = Ini(Quitar(.Range("G4"))) & "_" & h1.Name & " " & .Range("H3") & Format(.Range("I3"), "0000") 'Para solo las iniciales _
en G4, formato de número en I3 de conteo y nombre de la hoja
End With
'Ruta carpeta destino en la ventana Guardar como:. Puede cambiar la ruta aqui
    rut = "c:\0\"
'Guardar copia en
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = rut
'Si cancela sale de la macro
        If .Show <> -1 Then Exit Sub
        cp = .SelectedItems(1)
    End With
'Copia la hoja
    h1.Copy
'Elimina objetos Shapes (formas) existentes en la hoja
    With ActiveSheet
        .Shapes.Range(Array("uno", "dos")).Delete
    'Selection.Delete
'Por si hay datos en este rango y no los quiere en la copia, los eliminará pero tendras Desproteger este rango en la hoja Copia
.Unprotect Password:="By Jot@" 'Desprotege la copia para ejecutar limpiesa en el rango
    .Range("L1:Z500").Clear 'puede cambiar el rango o desactivarlo si no lo necesita
'Proteger la copia completa totalmente
        .Protect Password:="By Jot@", DrawingObjects:=True, Contents:=True, Scenarios:=True
        .EnableSelection = xlNoSelection 'Restringe todo, seleccion y escritura
    End With
ThisWorkbook.Protect Password:="By Jot@"
'Guarda hoja como xlsx
    ActiveWorkbook.SaveAs Filename:=cp & "\" & nbr & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, ReadOnlyRecommended:=False, _
        CreateBackup:=False
    ActiveWorkbook.Close
    MsgBox "Archivo guardado en " & cp & "\" & nbr & ".xlsx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Range("B11").Select
End Sub

Para que quede así;

Al darle con el derecho en la pestaña de la hoja, que nada quede activado (si es posible)

1 respuesta

Respuesta
1

H o l a:

Cambia esta línea

ThisWorkbook.Protect Password:="By Jot@"

Por esta:

ActiveWorkbook.Protect Password:="By Jot@", Structure:=True, Windows:=True

En este caso ThisWorkbook, se refiere a la libro que tiene la macro y ActiveWorkbook al nuevo libro.


Sal u dos

Hola DAM

Cres que así está correcto, así lo tengo,

'Proteger la copia completa totalmente
'PARA LA HOJA
        ActiveSheet.Protect Password:="By Jot@", DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveSheet.EnableSelection = xlNoSelection 'Restringe todo, seleccion y escritura
    End With
'PARA EL LIBRO
    ActiveWorkbook.Protect Password:="By Jot@"

me funciona pero veo en tu linea otras opciones

ActiveWorkbook.Protect Password:="By Jot@", Structure:=True, Windows:=True

Las voy a agregar porque cuando se proteje el libro en el cuadro dialogo muestra esa opcion marcado por defecto, ahora

¿A qué se refiere a ventana? (Windows:)

Structure es para proteger la estructura del libro (crear hojas, borra hojas)

Windows, es para que no puedas minimizar o maximizar la venta de la hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas