VB应用程序离开后台Excel进程直到应用程序退出

时间:2017-10-19 08:54:54

标签: excel vb.net

我在Visual Studio上开发了一个非常小而简单的VB应用程序,其作用是:

  1. 打开Excel工作簿(包括一些计算公式),
  2. 将参数值
  3. 输入INPUT单元格
  4. 从预定义的单元格中检索结果的值。
  5. Excel没有人机界面(即Excel_Application.Visible = False)。

    完成计算(并检索结果)后,执行以下命令:

    :
    Excel_Workbook.Close(False)
    Excel_Workbook = Nothing
    Excel_Application.Quit()
    Excel_Application = Nothing
    :
    

    即使执行了这些语句,查看任务管理器时也会显示Excel进程。当要求应用程序结束时(例如,单击窗口的“X”按钮),将删除此过程。

    应该注意的是,如果我打开图形界面,任务栏中的图标会在Excel_Application.Quit()之后消失,但后台进程仍然存在。

    我需要能够在不关闭应用程序的情况下不留下任何后台进程。

    我在网上搜索并找到了一些建议,但都没有。

1 个答案:

答案 0 :(得分:0)

我建议获取创建Excel应用程序的过程,然后将其关闭:

Imports System.Diagnostics
Imports Excel = Microsoft.Office.Interop.Excel

Sub UseExcel()

    Dim xlApp = New Excel.Application With {.Visible = True}
    Dim xlHwnd = New IntPtr(xlApp.Hwnd)
    Dim proc = Process.GetProcesses().First(Function(p) p.MainWindowHandle = xlHwnd)

    '// Do the work with Excel...

    '// In the end:
    proc.Kill()

End Sub