![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIyDy0iM8ZeeJb7OK_45pcDDucDFCAwR1nSpeKKBk8RXpwZpdFaXAcB6yZIFzoKbIiBkJezbSuLrKAmcv4cysPCECiGZTl4H4RTDeqGsWPZWUKKOOhVZRiG5gYxkRbE_T1BDbqybJvZUlc/s400/userform.gif)
A continuación, cliqueando en el botón Aceptar del UserForm, copiaremos este código:
Private Sub CommandButton1_Click() On Error Resume Next 'descargamos el userform Unload Me 'Cerramos el libro ThisWorkbook.Close End Sub |
También incluiremos esto otro a continuación de ese código:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) On Error GoTo Fin 'Evita que el usuario cierre con el cuadro 'de diálogo Cerrar de la barra de título (crucecita: X) 'del formulario activo If CloseMode <> 1 Then Cancel = True Fin: End Sub |
A continuación, en la sección ThisWorkbook que aparece dentro de la carpeta Microsoft Excel Objetos, copiaremos este código:
Private Sub Workbook_Open() 'Desactivamos las teclas de cancelación de macros Application.EnableCancelKey = xlDisabled 'Eventos que se producen al abrir el libro: 'si le han cambiado el nombre al fichero 'mostraremos un mensaje, y cerraremos 'el libro If ThisWorkbook.Name <> "hojas-de-calculo-en-excel.blogspot.com.xls" Then 'Cargamos el UserForm UserForm1.Show End If End Sub |
Finalmente, solo nos quedará por proteger el código VBA con una contraseña para que nadie tenga acceso al mismo. Esto lo conseguiremos desde VBA (Alt+F11), seleccionando en el menú Herramientas, la opción Propiedades de VBAProject..., y a continuación la pestaña Protección.
Podríamos haber arreglado todo, por ejemplo para que el UserForm, en lugar de llamarse UserForm1, se llamase de otra forma, pero lo dejaremos así, para que investiguéis como cambiarlo (os anticipo que es muy sencillo), y porque no pretendo entrar a ese nivel de detalle, ya que esto es solo para daros una idea de las posibilidades que nos puede brindar excel.
Desde aquí podéis descargar el fichero de excel, donde tenéis el ejemplo funcionando (pero sin proteger el código VBA, para que le echéis un vistazo).
el programa sólo funciona en la medida que este bajo, el nivel de seguridad.
ResponderEliminarR.B.D.
Sí, claro, pero se supone que vas a distribuir un fichero con macros, que va a ser útil a la gente, y que te ha llevado un tiempo desarrollar. Se supone que si el usuario no permite la ejecución de macros, tampoco le va a servir de nada el fichero.
ResponderEliminarUn saludo, y gracias por tu comentario.
Javier: sería interesante que apareciera un mensaje de advertencia al presionar "Guardar Como...", ¿no? Un abrazo desde Argentina, y felicitaciones por el blog. ¡Excelente!
ResponderEliminarSi haces un "Guardar como...", perfecto, podrás ponerle el nombre que desees, ...pero ¿qué pasará si abres ese fichero cuyo nombre no es el que debe tener?. Pruébalo y verás :-)
ResponderEliminarHola, he estado posteando tu blog, no lo conocía, me parece excelente. Mis mas sinceras felicitaciones
ResponderEliminar'LEWIS SARMIENTO-
Muchas gracias por tu comentario, Lewis.
ResponderEliminarUn saludo.
viejo un favor como hago para que un formulario se muestre y pasado un tiempo determiando (5 segundos, 10 no se) se desaparezca u oculte ??? es decir se podria utilizar para realizar la propaganda del autor del archivo que se esta abriendo...
ResponderEliminarCon el método OnTime puedes hacer eso. Para saber más sobre él, escribe esa palabra (OnTime), en un módulo VBA, la seleccionas a continuación con el ratón, y pulsas F1. Te saldrá la ayuda sobre ese método.
ResponderEliminarUn saludo.
Muy agradecido por compartir tus conocimientos. Me han sido de tremenda utilidad. Ahora bien, si cabe un pedido. Podrías escribir un artículo sobre cómo desactivar ciertos botones de la barra, por ejemplo, para impedir que se grabe con otro nombre, desactivar el botón "guardar como".
ResponderEliminarDe verdad este macro no sirve,por que si no se habilitan lo macros en el libro,igual puedes editar su nombre
ResponderEliminarClaro, pero se supone que el fichero está personalizado con macros, y por eso le quieres mantener el nombre, para que nadie lo cambie, ni se lo apropie como suyo.
ResponderEliminarSi el fichero no tiene macros, pues la verdad es que no tiene mucho sentido cambiarle el nombre al fichero.