Hojas de cálculo en Excel - página principal

Impedir que se cambie el nombre al fichero

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:

Anónimo dijo...

el programa sólo funciona en la medida que este bajo, el nivel de seguridad.

R.B.D.

Javier Marco dijo...

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.

Anónimo dijo...

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!

Javier Marco dijo...

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 :-)

LEWIS SARMIENTO dijo...

Hola, he estado posteando tu blog, no lo conocía, me parece excelente. Mis mas sinceras felicitaciones
'LEWIS SARMIENTO-

Javier Marco dijo...

Muchas gracias por tu comentario, Lewis.

Un saludo.

carlos ladino dijo...

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...

Javier Marco dijo...

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.

Robert Blanco dijo...

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".

Anónimo dijo...

De verdad este macro no sirve,por que si no se habilitan lo macros en el libro,igual puedes editar su nombre

Javier Marco dijo...

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.