es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

VB.Net – Proceso de Excel en segundo plano SE REABRE después de cerrar el archivo.

He estado buscando en todas partes este problema, pero no parece encontrar uno que se ajuste exactamente a mi problema.

Estoy creando un nuevo archivo de Excel, llenándolo con datos y mostrándolo al usuario. Mientras superviso el administrador de tareas, puedo ver que una vez que el archivo ha sido creado y abierto para el usuario, el proceso en segundo plano desaparece como se supone que debe hacerlo. (El proceso principal sigue funcionando en la parte superior porque el archivo está abierto).

El problema que tengo es que una vez que el usuario cierra el archivo, el proceso en segundo plano de Excel vuelve a aparecer en la lista y no desaparece hasta que se cierre el programa (que generó el archivo).

Esto es lo que estoy haciendo para limpiar:

Dim xlObject As New Excel.Application
Dim xlBook As Excel.Workbook = Nothing 
Dim xlSheet As Excel.Worksheet = Nothing 

xlBook = xlObject.Workbooks.Add
xlSheet = xlBook.Worksheets(1)

'Rellenar datos y hacer algunos formatos 

xlBook.SaveAs("NombreDeArchivo")
xlObject.Visible = True 

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
xlSheet = Nothing 
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
xlBook = Nothing 
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlObject)
xlObject = Nothing

¿Hay algo que me esté perdiendo? ¿Por qué el proceso en segundo plano continúa y solo desaparece una vez que se cierra el programa que lo creó?

Esto se está utilizando con Visual Studio 2013, Excel de Office 365 y Windows 10 Pro.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el proceso en segundo plano de Excel puede que no libere por completo su control sobre el archivo después de que el usuario lo haya cerrado. Una posible solución podría ser forzar a Excel a salir después de que el archivo se cierre agregando la siguiente línea de código:

    xlObject.Quit()
    

    Esto debería asegurar que Excel libere por completo su control sobre el archivo y el proceso en segundo plano no persista después de que el usuario haya cerrado el archivo.

Comments are closed.