Visual Basic para Aplicaciones - Mejor forma de cerrar un archivo

Life is soft - evento anual de software empresarial
 
Vista:

Mejor forma de cerrar un archivo

Publicado por Pablo (77 intervenciones) el 03/10/2018 09:08:37
Cuando quiero cerrar un archivo por las bravas uso application.quit, pero he notado que algunas veces se queda Excel colgado (solo desaparece el ibro), sobre todo si el usuario tiene otros libros abiertos y tengo que ir al administrador de tareas y cerrarlo allí.

¿Hay alguna forma más elegante?

No sé si ThisWorkBook.close SaveChanges:= False es tan radical o quizá una mezcla de ambos, como he visto en algún foro.
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

Mejor forma de cerrar un archivo

Publicado por Antoni Masana (498 intervenciones) el 04/10/2018 08:51:45
application.quit Cierra el libro y el Excel. Si antes de esto pones Application.DisplayAlerts = False evita el aviso de que se va a cerrar el libro y hay cambios sin guardar, no se guardan los cambios y se cierra.

S pones ThisWorkBook.close SaveChanges:= False esto cierra el libro sin guardar los cambios, pero no cierra el Excel, lo que se escriba a continuación de esta instrucción no se ejecuta si la macro está en el mismo libro que se cierra.

Todo depende de que se quiere hacer y quien lo hace. Abría que ver que el caso con más detalle para saber porque pasa lo del Excel.

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

Mejor forma de cerrar un archivo

Publicado por Pablo (77 intervenciones) el 06/10/2018 11:39:00
Gracias por tu tiempo.

He creado un flujo de aprobaciones de un pedido / factura para evitar el cruce de emails y que el pedido se pueda tramitar dos veces por error.

El usuario genera un pedido (bienes de equipos industriales, repuestos, accesorios, etc), pulsa un botón y automáticamente se envia la orden al departamento de verificación, como archivo adjunto.

(queda una copia en el PC del usuario para su información).

En el departamento de verificación abren ese adjunto, se guarda en el servidor, realizan sus verificaciones de que todo es compatible y dan su aprobación pulsando un botón.

Si otro miembro del departamento de verificación abre ese adjunto, lo primero que hace es leer un testigo que hay en el servidor y le avisa que alguien lo ha tramitado ya.

Entonces es cuando aplico el application.quit, pero puede darse el caso de que ellos tengan abierto Excel por cualquier otro motivo.

También aplico el application.quit si el solicitante busca el archivo y se lo envía como adjunto a alguien que no es del departamento de verificación, lo que ocurre con cierta frecuencia.
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 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

Mejor forma de cerrar un archivo

Publicado por Antoni Masana (498 intervenciones) el 08/10/2018 08:48:44
Esta función te devuelve cuantos libros hay abiertos en un Excel. Si el valor es 1 puedes cerrar el Excel si es mayor solo cierra el libro.

1
2
3
4
5
6
7
8
9
Function Listar_Libros_Abiertos()
    Dim Libros As Object, Total As Integer
    Total = 0
    For Each Libros In Application.Workbooks
        Total = Total + 1
    Next Libros
    Set Libros = Nothing
    Listar_Libros_Abiertos = Total
End Function

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