sam*_*_33 1 .net vb.net excel .net-3.5
我试图从vb.net 3.5获得excel文件的excel表名,但它打开但excel.exe仍然在这个过程中.如何在不从任务管理器中删除excel.exe的情况下停止进程?
我意识到新的excel.application开始了新的过程.
我试图使用戒烟,关闭和处置.......................没有任何效果
以下是我的代码
Dim sheetName As New Excel.XlSheetType
Dim newExcell As New Excel.Application
Dim newWorkBook As Excel.Workbook = app.Workbooks.Open(MyFileName)
Dim worksheetName As String
Dim ws As Excel.Worksheet = CType(WB.Worksheets.Item(1), Excel.Worksheet)
worksheetName = ws.Name
Run Code Online (Sandbox Code Playgroud)
我不能使用kill因为有其他excel应用程序正在运行,所以如何从处理器关闭这个特定的excel.exe.请帮忙
这篇KB文章描述了这个问题.
但是,要解决这个问题并不容易,因为您必须确保在实例化的每个Excel对象上调用Marshal.ReleaseComObject - 而且很容易错过一个.
例如,以下代码隐式引用Workbooks对象:
Dim newWorkBook As Excel.Workbook = app.Workbooks.Open(MyFileName)
Run Code Online (Sandbox Code Playgroud)
要释放Workbooks对象,您需要显式引用它,以便您有一个可以调用Marshal.ReleaseComObject的引用:
Dim objWorkbooks As Excel.Workbooks = app.Workbooks
Dim newWorkbook As Excel.Workbook = objWorkbooks.Open(MyFileName)
...
Marshal.ReleaseComObject(objWorkbooks)
Marshal.ReleaseComObject(newWorkbook)
...
Run Code Online (Sandbox Code Playgroud)
您还应该使用Try/Finally来确保即使抛出异常也会调用ReleaseComObject.
| 归档时间: |
|
| 查看次数: |
6852 次 |
| 最近记录: |