Bloquear nombre de hojas en Excel con macro

Nuevamente por acá.

Después del gran trabajo (ayuda) que prestaste, ve4ngo con algo mucho más sencillo (para ti)

Quiero bloquear el nombre EXTERNO de hojas. Se que el nombre interno no cambia, seguirá siendo Hoja1, 2, 3, etc o el que le des en las propiedades de hoja, interno. El nombre 'externo' lo obtengo con Hoja1. Name

Para que nadie pueda cambiar nombre externo tengo

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Esto se ejecutará justo unos instantes antes de guardar el fichero y cerrar
If Hoja1.Name <> "Trabajo" Then Hoja1.Name = "Trabajo"
If Hoja2.Name <> "Trabajo2" Then Hoja2.Name = "Trabajo2"
End Sub

Pero sucede que mientras tengas el libro abierto, el nombre externo es aquel que le pongas mientras esta abierto, y interfiere en la ejecucion d macros.

Pretendo que al cambiar a (escribir) un nuevo nombre de pestaña (nombre externo) le das enter y que ahí mismo te diga que no es permitido dicho cambio.

No quisiera tener la hoja Bloqueada (protegida con PASSW porque entonces me llevaría a tener el desbloqueo/bloqueo en las macros y prácticamente soy el único que trabaja con las plantillas, (las secretarias salen caras je je).

Pero me dirás. Entonces si eres tu solo, ¿para qué bloquear cambio de nombre externo a hojas?

Por seguridad de mi mismo y pensando en futuro

2

2 Respuestas

915.235 pts. "Todos somos genios. Pero si juzgas a un pez por su...

No sé quien fue que te ayudo, pero me voy a meter :-)

No conozco ningún método que te sirva para cuando 'das el ENTER' al cambiar el nombre, lo que podrías hacer es revisar el nombre de las hojas al activarla o desactivarla, pero siendo que te pueden modificar este nombre sin cambiar de hoja y "romper" lo que no querías que rompan, y como bien dices, si estás pensando en el futuro, entonces creo que lo mejor es ir por la opción de la protección de las hojas y que tengas que desproteger/proteger en cada una de tus macros.

Salu2

Gracias por intervenir,

He estado buscando pero casi todos van por ese tema, Bloquear el libro o hoja con passw, entonces en las macrom en que necesite inresar algun/os datos tien que tener al inicio el desbloqueo y al final volver a bloquear.

Aquí hay una muy buena explicación

@Desactivar la opción para cambiar el nombre a las hojas en excel 2010

Optare por el nombre interno en las macros

Esa opción es buena, pero creo que si es un archivo que modificas mucho, entonces se volverá lento, ya que está llamando a esa macro todo el tiempo.

Coincido contigo en que lo mejor es usar el nombre interno de las hojas y de esa forma te evitás inconvenientes

Salu2

Fui por esta del amigo Dante Amor en la pregunta mencionada en el enlace

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
MsgBox "Procedimiento no permitido"
ActiveSheet.Name = "siemprehoja1"
Application.EnableEvents = True
End Sub

Solo le agregue el mensage pero,  tiene que tener obliogatoriamente estas lineas Application.EnableEvents = False y al final True porque si no se pone de manifiesto un bukle sin parar

Está bien ese procedimiento, pero creo que te falta alguna consulta, porque así como está cada vez que mandes a recalcular la hoja te va a salir el mensaje de 'Procedimiento no permitido' (aunque la persona pueda haber hecho cualquier otra cosa y no necesariamente cambiar el nombre de la hoja)

Salu2

128.200 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Hay una opción y es la siguiente macro

Private Sub Worksheet_Deactivate()
nombre = "enero"
If Hoja1.Name <> nombre Then Hoja1.Name = nombre
End Sub

Si alguien cambia el nombre de la hoja en cuanto cambie de hoja regresara el nombre de la hoja al nombre original también puedes programar los eventos para que antes de cerrar el libro o antes de de grabarlo se restaure el nombre o bien cuando se active el libro. Lo único que tendrías que hacer es proteger la macro con password

Favor de ignorar mi comentario tuve un problema de lectura

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas