Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

Sign in to follow this  
Milton Cordova

Verificar proteccion de hojas

Recommended Posts

saludos alguien me puede indicar si existe alguna forma o macro que verifique si alguna hoja del libro no esta protejida, con la finalidad de crear siempre un seguro de que al guardar el libro oarchivo, queden todas las hojas protejidas

Gracias

Share this post


Link to post
Share on other sites

Buen dìa Milton.

Si hay manera de solucionar el problema que planteas mediante una macro.

Te sugiero que crees una subrutina que bloquee todas las hojas del libro y luego la mandes a llamar desde el evento WorkBook_BeforeClose del objeto ThisWorkBook.

Lo que hara la macro es que cada que se vaya a cerrar el libro la macro bloquera todas las hojas.

Saludos, espero te sirva la sugerencia.

Share this post


Link to post
Share on other sites

Saludos si tengo un libro inicial con 5 hojas la macro seria

Sheets(Array("Hoja1", "Hoja2", "Hoja3", "Hoja4", "Hoja5")).Select

Sheets("Hoja1").Activate

Pregunto como puede ir detectando todas las hojas que se vayan creando en lo posterior y cambiendo el nombre de las hojas

gracias

Share this post


Link to post
Share on other sites

Hola!

Pon este código en un nuevo módulo

Sub Hojas_Desprotegidas()
Dim Hoja As Worksheet
Dim Mensaje As String
Mensaje = ""
For Each Hoja In ThisWorkbook.Worksheets
If Not Hoja.ProtectContents Then
Mensaje = Mensaje & Chr(13) & Hoja.Name
End If
Next
If Len(Mensaje) = 0 Then
Mensaje = "Felicidades, no hay hojas desprotegidas en este libro"
Else
Mensaje = "Hojas desprotegidas de este libro:" & Mensaje
End If
MsgBox Mensaje, vbInformation, "Resumen de Protección"
End Sub
[/CODE]

Share this post


Link to post
Share on other sites

Buen dia Milton.

Aquí te dejo una subrutina que te puede servir para proteger tu libro antes de guardar.

Solo tienes que mandar a llamar esta subrutina en el evento WorkBook_BeforeClose del objeto ThisWorkBook y ya con esto quedara protegida todas tus hojas.

Puedes cambiar el passwor en la parte de que dice Activesheet.protect ("") al que tu desees.

Esta es la parte donde mandas a llamar la subrutina antes de cerrar el libro:

Private Sub Workbook_Open()

End Sub

Sub Proteger_Hojas()

Dim Sheet As Worksheet

For Each Sheet In ThisWorkbook.Worksheets

If Not Sheet.ProtectContents Then

Sheet.Select

ActiveSheet.Protect ("12345")

MsgBox "Se ha protegido la siguiente hoja : " & Sheet.Name, vbExclamation + vbOKOnly, "Porteger_Hoja"

End If

Next

End Sub

Share this post


Link to post
Share on other sites

Saludos no se como puedo integrar la macro, he intentado con esto en ThisWordBook, pero cuando cierro o guardo no protege las hojas, quiza algunza ayuda adicional

Gracias

WorkBook_BeforeClose

Sub Proteger_Hojas()

Dim Sheet As Worksheet

For Each Sheet In ThisWorkbook.Worksheets

If Not Sheet.ProtectContents Then

Sheet.Select

ActiveSheet.Protect ("MC")

MsgBox "Se ha protegido la siguiente hoja : " & Sheet.Name, vbExclamation + vbOKOnly, "Porteger_Hoja"

End If

Next

End Sub

Share this post


Link to post
Share on other sites

Buenos dias, también necesito una rutina que verifique si todas las Hojas del Libro se encuentran efectivamente bloqueadas. Pueden indicar, por favor, donde debo colocar esta sub-rutina. No se donde ubicar el evento WorkBook_BeforeClose del objeto ThisWorkBook.

Ayudaría mucho si adicionaran un archivo, como ejemplo... ;)

Muchas gracias de antemano,

Jeani...

Share this post


Link to post
Share on other sites

Buen dia en el editor en la parte izquierda se encuentra el explorador de proyectos abajo del nombre se pueden ver la lista de objetos, ahi van a ver una que se llama ThisWorkBook dan doble clic sobre el y se habilitaria la ventana donde agregaran en codigo.

Antes de agregar el codigo en la parte de arriba en las listas desplegables cambian a WorkBook

y en la siguiente lo ponen en el evento WorkBook_BeforeClose y ahi agregan el codigo.

Te agrego un ejemplo

Proteger_Hoja.rar

Share this post


Link to post
Share on other sites

Hola Gilberto, gracias por tu apoyo. :)

En el caso del trabajo que estoy trabajando no necesito que las hojas queden desprotegidas al abrir el documento. Cuando elimino esta parte del código y dejo solo la sección que valida la protección de las hojas al cerrar el documento me da un error en la línea resaltada en color rojo:

Sub DesProteger_Hoja()

For Each Sheet In ThisWorkbook.Worksheets

Sheet.Select

ActiveSheet.Unprotect ("MC")

MsgBox "Se ha desprotegido la siguiente hoja : " & Sheet.Name, vbExclamation + vbOKOnly, "Porteger_Hoja"

Next

End Sub

Podrías indicarme ¿cuál es cambio que debo realizer? :(

Share this post


Link to post
Share on other sites

Saludos macro perfecta, un adicional si deseo que el libro luego de ejecutar esta macro se posicione al una hoja determinada puedo poner

Sheets(“Hoja1”).Select

el problema lo tengo cuando cambio el nombre de la "Hoja 1" por ejemplo a "SEG" no me reconoce esta hoja

Gracias por la consulta

Share this post


Link to post
Share on other sites

Hola Jeani /Milton

Para jeani, debes borral la parte del codigo en el evento WorkBook_Open, la parte que dice Call Desprotege_Hoja y con eso quedaria deshabilitado el codigo que desproteje las hojas al iniciar el libro.

Para Milton, para hacer lo que comentas puedes hacer lo siguiente, localiza en el explorador de proyectos el nombre del objeto de la hoja que deseas que se seleccione. Hay dos partes del nombre que aparece como este ejemplo

hoja1 ("SEG") en el explorador de proyecto.

Para selecciona esta hoja solo pondras el siguiente codigo Hoja1.Select y asi estaras llamando al la hoja por el nombre del objeto interno, ya que este nunca cambia y no por el nombre de la hoja que es el que estara sujeto a los cambios que tu hagas.

Espero haberlos ayudado.

saludos!!!

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png