¿Cómo activar las macros automáticamente e impedir que usuarios desactiven las macros?

Que tal Dante Amor:

Pues bien maestro, le solicito amablemene su ayuda para los siguiente:

Al momento de abrir la aplicación es necesario que se activen de manera automatica las macros en los equipos que las tienen deshabilitadas. Así como también impedir que los usuarios las desactiven.

Gracias por la atención.

1 Respuesta

Respuesta
1

No es recomendable que se activen las macros de manera automática, es un tema de seguridad, por el software malintencionado que existe.

Pero si eso es lo que necesitas, tendrían que configurar en esta parte:

Botón office / Opciones de excel / Centro de confianza / Configuración del centro de confianza / Configuración de macros / Habilitar todas las macros.

La otra opción es que en tu aplicación, pongas las hojas invisibles y que no las puedan ver hasta que las macros estén habilitadas, si las macros están habilitadas entonces haces visibles las hojas. Este tema de seguridad es más amplio, tienes que ver también la protección de VBA, de las hojas, y todo esto probarlo con el libro compartido. Hay algunas situaciones que no se pueden realizar cuando compartes el libro. Y esto tendrás que probarlo.

Comprendo la situación, de hecho ya tengo protegido el editor de VB con contraseña, para evitar que me borren o alteren el código, aun así estoy conciente que esto no me garantiza una seguridad a prueba de todo.

En cuanto a las hojas visibles e invisibles, necesariamente tengo que dejarlas siempre invisibles para que los usuarios no las puedan ver y de esta manera evitar que modifiquen los datos o copien las hojas.

De hecho ya agregue una rutina para que al abrir el arch se oculte el excel y muestre un form que solicitará una contraseña de acceso, para mostrar el form principal con el menú de opciones y una vez que ha ingresado a este menú, lo único que veran serán forms, el excel y sus hojas permancecera siempre ocultos. El objetivo principal es que el usuario no vea de dónde proviene la información ni a dónde se va.

En conclusión, lo que intento hacer es una pequeña aplicación que se vea lo más profesional posible, sin excel, sin hojas (en teoria), pero me falta la rutina para impedir que el usuario las haga visibles manualmente con la opción avanzada de excel (mostrar hojas), así como otra rutina para impedir que el usuario desactive las macros desde el centro de confianza y seguridad de macros. Aquí debo aclarar que como administrador único, debo tener la facilidad de hacer visible la hoja de mi interés ya que ocasionalmente será necesario hacer algún ajuste directamente, por lo que estoy pensando en diseñar otro form para acceder a la hoja deseada.

Ahora bien, en cuanto a la activación de las macros, si los demás usuarios tienen deshabilitada las macros, la rutina anterior de apertura no se ejecuta y abre el excel de manera normal, mostrando mis datos.

La opción que me sugieres de mostrar una hoja y ocultar el resto para informar al usuario que active las macros, no es mala. Pero se aleja del objetivo anteriormente expuesto. 

Comprendo que este tema es muy amplio y que las opciones de VB con su aplicacion anfitriona no son muchas para este fin y que aun con las medidas adoptadas no se garantiza la invulnerabilidad. También estoy conciente de los riesgos que implica activar de manera automática las macros al momento de abrir mi ach. pero, ¿Qué otra opción tengo para lograr mi objetivo principal?

Ante esta situación, recurro a su amplio conocimiento y basta experiencia para recibir sus comentarios, sugerencias y/o métodos que más me convengan para lograr mi objetivo.

Conciente de sus múltiples ocupaciones, le agradezco infinitamente la atención y el tiempo que dispone a mi solicitud.

¡ Muy buenas noches !

Para ocultar la hoja es con la siguiente instrucción:

Sheets("nombre").Visible = xlVeryHidden

Con esta instrucción no podrán mostrar la hoja desde el menú de usuario. De la única forma que pueden mostrarla es con código VBA, pero como tienes protegido el código entonces no podrán entrar.

Para hacerla visible:

Sheets("nombre").Visible = True

Hola Dante Amor:

Recibe un saludo cordial, esta bien la sugerencia, pero que posibilidad hay de que me hagas el favor en cuanto puedas de enviarme un ejemplo para los siguiente:

En un form voy a colocar un text, un combo (o un cuadro de lista) y un botón, la idea es qué  cuando llame a este form desde mi menú principal, el combo y el botón no sean visibles, para hacerlos visibles será necesario introducir la clave, si la clave es correcta, se mostrará el combo con los nombres de las hojas, si la clave es incorrecta se cerrara el form. Para ir a una hoja se debera seleccionar y dar click dentro del combo o por medio del botón, cualquier opción es buena.

Como siempre te agradezco infinitamente por compartir tus conocimientos y tu tiempo. 

Nota: Si con el combo o cuadro de lista basta, no es necesario incluir el botón.

Puedes ocultar controles al inicio y cuando modifiques el textbox los haces visibles.

Private Sub TextBox1_Change()
    CommandButton1.Visible = True
    ComboBox1.Visible = True
End Sub
Private Sub UserForm_Activate()
    CommandButton1.Visible = False
    ComboBox1.Visible = False
End Sub

Prueba y dime si esa es tu idea.

Hola, estimado Dante:

He enviado a tu correo mi aplicación para solicitarte amablemente tu invaluable ayuda. En el correo te explico los detalles, comentame por favor si es necesario hacer una nueva consulta .

¡Gracias! 

Ya te hablé sobre seguridad, de cómo ocultar la aplicación de excel y de cómo ocular controles, podrías valorar esta respuesta y crea una nueva pregunta específica por cada petición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas