Hola. Quiero hacerte las siguientes dos consultas: 1)He creado una base de datos y me gustaría que se pudiera identificar el usuario que ha cargado datos ingresando una clave que el resto de los usuario no conozcamos. 2)¿Cómo se puede en el inicio de ejecución de una macro, dar un mensaje de advertencia al usuario para que si no realizó determinada tarea antes, pueda la misma abortarse y no seguir?
Desde ya te agradezco la respuesta.
1 Respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
He leído varias veces tu primera pregunta y me pongo a escribir sin tener mut en claro a dónde quieres llegar. Mi mejor aproximación es pensar que quieres una especie de "log" de usuario como los que se podría desarrollar en alguna aplicación específica de bases de datos, tipo MS Access o Foxpro. En tales casos, sería posible habilitar un campo que guardara una clave de identificación de la última persona que modificó algún dato del registro... Lamentablemente, MS Excel es otra cosa. Una enorme hoja donde el usuario puede modificar lo que quiera (a menos que se hayan protegido algunas celdas y aún así es fácilmente vulnerable). Podría desarrollarse un complejo sistema de macros en Visual Basic que monitoreen los cambios y registren quién los hizo, supuesto que haya ingresado con una clave válida, pero ese registro estaría disponible para que otros usuarios lo vean y modifiquen, con lo cual haría estéril cualquier esfuerzo de programación. En definitiva, MS Excel no es precisamente sólido en cuestiones de Seguridad y hasta tal vez sea conveniente que así sea. Tal vez, la herramienta más cercana a lo que solicitas, la encuentres bajo la opción "Herramientas" | "Compartir libro". Una vez marcada la casilla de compartir, observa las opciones que tienes en "Uso avanzado". Bien, una vez que está habilitada esta opción, podrás hacer un seguimiento de que cambios hizo quien y autorizarlos o no. Esto es a través de la opción "Herramientas" | "Control de cambios". Como vez se parece bastante, aunque no hay claves en este caso (podrías colocarle una clave de acceso o de escritura al archivo para que sólopuedan modificarlo quienes conocen la contraseña). Odio tener que desalentar una idea, pero -aunque potente- MS Excel tiene sus limitaciones. Tal vez la solución alternativa te sea de utilidad... --- Para tu segunda pregunta, te presto la siguiente rutina que uso para que el usuario decida si continua o termina una macro. Al comienzo de tu rutina agrega el siguiente par de líneas: QueHago = MsgBox("Recuerde que para ejecutar esta macro," & Chr(10) & "primero debe haberse lavado las manos" & Chr(10) & "Si usted ya lo hizo, elija Aceptar" & Chr(10) & "Caso contrario, presione Cancelar", vbOKCancel + vbInformation, "Punto de control") If QueHago = vbCancel Then Exit Sub Nota que Exit Sub va inmediatamente después de Then (aunque en mi pantalla se vé como si fuesen dos lineas. Es una sola) Bien, esta macro recuerda al usuario qué debe hacer antes de ejecutar la macro (lavarse la manos, pero -desde luego- puedes cambiar este texto por el que te parezca conveniente). Personalmente, extremaría recursos para que sea la propia macro la que controle si aquella acción (que no sé cual es) fue realizada antes que dejarlo en las manos (lavadas) del usuario. Pero esto, por supuesto, depende de ti Bueno, Sr. Fierro, espero que mi respuesta le sea de ayuda. Un abrazo! Fernando
Fantástico. La respuesta a la 2ª pregunta me resultó perfecta. Respecto de lo que me dijiste acerca de la utilización de un log de usuario, me sirvió para no seguir buscando, y se me ocurrió alguna otra alternativa, como el ingreso de una clave en una celda con una fuente de código de barras, y en una celda contigua que me aparezca el nombre del mismo mediante la función Buscarv. Te agradezco tu gentileza en contestarme y te mando un fuerte abrazo desde Buenos Aires, Argentina. Marcelo