No abrir archivo si no se habilitan macros

Soy nuevo en esto y solicito su ayuda. He preparado un archivo en Excel que funciona con una pequeña macro, como es para distribuirlo entre 20 usuarios, lo que necesito es lo siguiente:
Al abrir el archivo me debe "obligar" a habilitar las macros, si no las habilito, el archivo no debe abrirse, algo así como un MsgBox que pregunte "¿Desea habilitar macros? Si no habilita el archivo no se abrirá. Si el usuario hace clic en SÍ, el archivo debe abrirse (y obviamente deben activarse las macros); si el usuario hace clic en NO, el archivo no debe abrirse. Espero que se pueda hacer esto y gracias de antemano por su apoyo.

1 respuesta

Respuesta
1
Creo que no es posible evitar que se abra el archivo, pero lo que si puedes conseguir es que el usuario no pueda utilizarlo sin haber habilitado las macros.
La forma como lo resolvería es creando una hoja donde informas al usuario que por no haber habilitado las macros no puede usar el archivo y darle instrucciones de cómo activarlas.
Esta sería la hoja por default al inicio del archivo, que aparecerá siempre que no se habilitan las macros. Luego, en caso de que las macros se habiliten correctamente, entonces el primer código que se ejecutaría sería el Evento Open del Workbook, entonces en este evento lo que haces es ocultar la hoja por default y mostrar la hoja donde está la información que te interesa utilizar.
Es una forma de hacerlo, de todas formas si no te queda claro me avisas.
Bien, gracias Tavopz, es buena idea. Pero ¿cómo hacer eso?. Mi libro de excel tiene tres hojas, una se llaman Cara, Datos y Publicar. A lo que tendría que añadirle una hoja INSTRUCCIONES, y programar lo indicado, pero ¿cómo hacerlo?. Gracias de antemano por la ayuda.
En esta página hay un ejemplo bastante completo (está en Inglés, pero incluso puedes descargar un ejemplo al final).
http://www.vbaexpress.com/kb/getarticle.php?kb_id=379
Cualquier duda me lo haces saber.
Bien, si me ayudó bastante el código, pero en algunos casos ya no los activa a las hojas ocultas. Me explico, tengo un libro de 5 hojas. Una se llama Ayuda (esta se debe mostrar si no se activan las macros, las otras se llaman Cara y Unidad y Tira (estas deben mostrarse al activar las macros) y la última se llama Datos (esta no debe mostrarse en ningún caso.
COn los datos que eme pasaste más uns cosas que adecué del foro, tengo este código que funciona bien, pero presenta el problema que NO ACTIVA LA OPCIÓN GUARDAR COMO, de frente sobreecribe el archivo con el mismo nombre. Ayúdame con esto por favor.
Private Sub Workbook_Open()
ActiveWorkbook.Unprotect "123"
For Each SHT In Sheets
If SHT.Name <> "Ayuda" Then SHT.Visible = True
Next SHT
Sheets("Ayuda").Visible = False
Sheets("Datos").Visible = False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'salida
Application.ScreenUpdating = False
Sheets("Ayuda").Visible = True
Sheets("Ayuda").Select
ActiveWorkbook.Unprotect "123"
For Each SHT In Sheets
If SHT.Name <> "Ayuda" And SHT.Visible Then SHT.Visible = xlVeryHidden
Next SHT
ActiveWorkbook.Protect "123"
Application.DisplayAlerts = True
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ActiveWorkbook.Unprotect "123"
For Each SHT In Sheets
If SHT.Name <> "Ayuda" Then SHT.Visible = True
Next SHT
Sheets("Ayuda").Visible = False
Sheets("Datos").Visible = False
ActiveWorkbook.Saved = True
Cancel = True
End Sub
Todo esto va en el ThisWorkBOook
Gracias Tavopz. Es excelente el código sólo que ello había reemplazado mal algunos datos. Pero sí funciona.
http://www.vbaexpress.com/kb/getarticle.php?kb_id=379
Un abrazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas