.net - 如何结束excel.exe进程?

标签 .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

我不能使用 kill 因为还有其他 excel 应用程序正在运行,所以我如何从处理器中关闭这个特定的 excel.exe。请帮忙

最佳答案

This KB article描述了问题。

但是,这不是一个容易解决的问题,因为您必须确保在您实例化的每个 Excel 对象上调用 Marshal.ReleaseComObject - 而且很容易错过一个。

例如,以下代码隐式引用了 Workbooks 对象:

Dim newWorkBook As Excel.Workbook = app.Workbooks.Open(MyFileName) 

要释放 Workbooks 对象,您需要显式引用它,以便您有一个可以调用 Marshal.ReleaseComObject 的引用:
Dim objWorkbooks As Excel.Workbooks = app.Workbooks
Dim newWorkbook As Excel.Workbook = objWorkbooks.Open(MyFileName)
...
Marshal.ReleaseComObject(objWorkbooks)
Marshal.ReleaseComObject(newWorkbook)
...

即使抛出异常,您也应该使用 Try/Finally 来确保调用 ReleaseComObject。

关于.net - 如何结束excel.exe进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189379/

相关文章:

c# - 不同的 DLL,但在控制台应用程序和网站中应该相同

c# - .NET 真的使用 NFA 作为正则表达式引擎吗?

c# - 处理 SOAP 响应时 XML 解析错误

python - 从 VBA 运行 python 脚本

vba - 在多页控件中动态添加页面

.net - 灯开关评估

c# - 在 c# 中使用/不使用正则表达式清除不需要的十六进制字符

vb.net - GUI不会相应移动

asp.net - 使用带有代码隐藏的网络表单通过反射引发事件

javascript - 下载文件;使用 .execScript VBA 执行 JavaScript 函数