Visual Basic para Aplicaciones - Ejecutar macro de un libro sin detener la macro de otro libro.

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ejecutar macro de un libro sin detener la macro de otro libro.

Publicado por Danny (3 intervenciones) el 10/08/2019 02:09:39
Recurro a ustedes con un problema que no logro resolver.

Tengo un libro de Excel que funciona como una base de datos con unos formularios para ingresar la información. Dentro de la programación hay diferentes instrucciones para manipular los datos y sacar reportes según sea necesario. Una de estas instrucciones abre otro libro de Excel que también tiene código para que al abrirse, automáticamente las hojas de este se guarden individualmente como pdf. Hasta aquí funciona perfectamente. El problema llega cuando, al momento de cerrarse el libro activo (automáticamente por medio de código), me detiene la macro de la base de datos y me cierra el formulario que quedó activo al momento de abrir el segundo libro.

¿Cómo puedo hacer para que esto no suceda? ¿Es decir, como hago para que el formulario de la base de datos no se cierre dejándome el archivo abierto en la hoja activa? Esto con la intención de que el usuario final de la macro no pueda tener acceso a la hoja activa ni a la manipulación de los datos que contienen las demás hojas del archivo.

De antemano agradezco cualquier sugerencia o posible solución que me puedan ofrecer. Quizá la solución es una cosa sencilla pero mi poca experiencia en la elaboración de macros me impide continuar a pesar de buscar opciones en la web.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ejecutar macro de un libro sin detener la macro de otro libro.

Publicado por Antoni Masana (498 intervenciones) el 10/08/2019 10:05:49
Buenas,

Me he tenido que leer esto 5 veces para ver si lo acabo de entender, se que las explicaciones suenan muy bien en nuestra cabeza hasta que lo tenemos que escribir.

Haber si lo he entendido, tienes dos libros:

- El LIBRO-A tiene formularios y funciona como Base de Datos.
- El LIBRO-B tiene una macro que al abrir el libro genera PDF.

El problema que tienes es que tienes el LIBRO-A abierto y este abre el LIBRO-B el cual ejecuta su macro y pierdes el control en la macro que abrió el libro.

Si el problema es este e me ocurre lo siguiente:

- Antes de abrir el LIBRO-B crea una marca, que puede ser un fichero temporal. Por ejemplo C:\Temp\STOP-Macro.tmp
- El segundo libro al ejecutar la macro AUTO_OPEN mira si existe el fichero y se para si existe.
- El LIBRO-A ejecuta la macro del LIBRO-B
- Esta segunda macro no hace determinadas acciones si existe el fichero marca como por ejemplo cerrar el libro.
- Una vez finalizada la macro del LIBRO-B, la macro del LIBRO-A cierra el B y borra la marca.

Y así no se pierde el control.

Y si esto no sirve sube los libros para ver que pasa y como evitarlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ejecutar macro de un libro sin detener la macro de otro libro.

Publicado por Danny (3 intervenciones) el 10/08/2019 20:10:55
Muchas gracias por su pronta respuesta Sr. Antoni.

Disculpe si no fui claro en mi explicación al problema, en efecto en nuestra cabeza suena bien y creemos que hemos sido claros y al final no es asi jejeje. Pero ha entendido usted muy bien lo que trate de explicar. Así que voy a aplicar sus sugerencias para ver si me funciona y le comentare como me fue.

Una vez mas gracias por estar atento.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 121
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ejecutar macro de un libro sin detener la macro de otro libro.

Publicado por Alfredo (40 intervenciones) el 10/08/2019 14:42:10
Hola Dany

Libro A: tiene el form de datos y este llama al Libro B

Libro B: ejecuta una macro que guarda PDF ( esto es lo que entendí )

Entonces para cerrar el Libro B sin afectar al Libro A cierra el B por su nombre Workbooks(Libro B).Close

Si no te funciona, sube los 2 archivos (solo con datos minimos o cambialos) para estudiarlos

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ejecutar macro de un libro sin detener la macro de otro libro.

Publicado por Danny (3 intervenciones) el 10/08/2019 20:14:03
Gracias Sr. Alfredo

Revisaré sus sugerencias y luego le comento como me ha ido con ella.

Gracias por estar atento

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar