Excel 进程在关闭 Excel 后显示备份



我正在使用以下命令从我的 winform 中打开一个 excel 文件:

Dim xlsApp3 As Excel.Application
Dim xlsWB3 As Excel.Workbook
xlsApp3 = CreateObject("Excel.Application")
xlsApp3.Visible = True
xlsWB3 = xlsApp3.Workbooks.Open("C:myfile.xlsm")
Try
Marshal.ReleaseComObject(xlsWB3)
Marshal.ReleaseComObject(xlsApp3)
xlsWB3 = Nothing
xlsApp3 = Nothing
Catch ex As Exception
xlsWB3 = Nothing
xlsApp3 = Nothing
Finally
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Try

当我查看我的任务管理器时,它会关闭进程,但是一旦我关闭打开的 excel 应用程序窗口,进程就会回来?如果我关闭整个wform应用程序,那就是excel过程关闭的时候。应用程序是否保留内存中的进程?

添加以下行:

xlsWB3.Close(True, Type.Missing, Type.Missing)        
xlsApp3.Quit

不要像在

xlsApp3.Workbooks.Open

工作簿对象在后台打开,但 .NET 不知道它,也无法正确清理它。

相反,您需要对工作簿进行 .NET 引用,GC 将为您清理所有内容。您的整个代码片段可以简化为此

Dim xlApp = New Excel.Application()
Dim xlBooks = xlApp.Workbooks
Dim xlBook = xlBooks.Open("C:myfile.xlsm")
xlApp.Visible = True

最新更新