gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:13:21 25 4
gpt4 key购买 nike

我正在尝试从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com