【发布时间】:2014-01-15 12:47:45
【问题描述】:
我已经阅读了很多帖子来寻找我的答案,但都与此类似: Reading excel files in vb.net leaves excel process hanging
我的问题是我没有退出应用程序...
想法是这样的:
如果用户打开了 Excel,如果他打开了我感兴趣的文件...获取该 Excel 实例并做我想做的任何事情...
但我完成后不会关闭他的文件...我希望他继续处理它,问题是当他关闭 Excel 时...进程继续运行...并运行。 .. 并在用户使用 X 按钮关闭 Excel 后运行...
这就是我尝试的方式
这块用来知道他是否打开了Excel,并在For I中检查了我感兴趣的文件名。
Try
oApp = GetObject(, "Excel.Application")
libroAbierto = True
For Each libro As Microsoft.Office.Interop.Excel.Workbook In oApp.Workbooks
If libro.Name = EquipoASeccionIdSeccion.Text & ".xlsm" Then
Exit Try
End If
Next
libroAbierto = False
Catch ex As Exception
oApp = New Microsoft.Office.Interop.Excel.Application
End Try
这将是我的代码...如果他没有打开 Excel,我创建一个新实例,打开文件和其他所有内容。
我的代码以此结尾:
If Not libroAbierto Then
libroSeccion.Close(SaveChanges:=True)
oApp.Quit()
Else
oApp.UserControl = True
libroSeccion.Save()
End If
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(libroOriginal)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(libroSeccion)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(origen)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(copiada)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oApp)
libroOriginal = Nothing
libroSeccion = Nothing
oApp = Nothing
origen = Nothing
copiada = Nothing
nuevosGuardados = True
所以你可以看到,如果我打开文件,我会调用 oApp.Quit() 和其他所有操作,Excel 进程会在几秒钟后结束(大约 5 秒)
但如果我的意思是用户保持文件打开(不调用 Quit()),则 Excel 进程会在用户使用 X 按钮关闭 Excel 后继续运行。
有什么办法可以做我想做的事吗?控制一个打开的 excel 实例并释放所有内容,所以当用户使用 X 按钮关闭它时,Excel 进程正常死掉???
谢谢!!!
【问题讨论】:
标签: excel process interop release