Quizás te hayas preguntado alguna vez, si es posible impedir que una aplicación tuya hecha en excel, y que distribuyes gratuitamente por internet, acabe teniendo diferentes nombres, porque a fulanito o menganito le ha dado por cambiárselo. Una solución sencilla para que esto no ocurra, y podamos impedir por tanto que el fichero tenga un nombre distinto al que su creador le dio, es esta utilidad que os presento hoy, y que consiste primero en crear un UserForm como este de la imagen (tan solo deberéis cambiar el nombre del fichero, que en este caso le he llamado hojas-de-calculo-en-excel.blogspot.com.xls):
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).
11 comentarios:
el programa sólo funciona en la medida que este bajo, el nivel de seguridad.
R.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.
Un 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!
Si 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 :-)
Hola, he estado posteando tu blog, no lo conocía, me parece excelente. Mis mas sinceras felicitaciones
'LEWIS SARMIENTO-
Muchas gracias por tu comentario, Lewis.
Un 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...
Con 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.
Un 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".
De verdad este macro no sirve,por que si no se habilitan lo macros en el libro,igual puedes editar su nombre
Claro, 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.
Si el fichero no tiene macros, pues la verdad es que no tiene mucho sentido cambiarle el nombre al fichero.
Publicar un comentario