【问题标题】:Visual Basic - Closing excel still leaves processesVisual Basic - 关闭 excel 仍然会留下进程
【发布时间】:2018-10-31 10:28:59
【问题描述】:

我创建了一些代码,用于在表单加载时从 excel 文件填充表单上的组合框。

作为代码的一部分,它应该释放关联的对象,但它没有

        Dim excel As New Excel.Application
    Dim w As Excel.Workbook = excel.Workbooks.Open("C:\Email Template\Violations Log\Violations Log.xlsx")
    Dim sheet As Excel.Worksheet = w.Worksheets("Individual Data")
    Dim r As Excel.Range = sheet.Range("A2:A300")
    Dim array(,) As Object = r.Value(excel.XlRangeValueDataType.xlRangeValueDefault)
    Dim sheet2 As Excel.Worksheet = w.Worksheets("Category")
    Dim s As Excel.Range = sheet2.Range("A2:A20")
    Dim array2(,) As Object = s.Value(excel.XlRangeValueDataType.xlRangeValueDefault)
    Dim bound0 As Integer = array.GetUpperBound(0)
    Dim bound1 As Integer = array.GetUpperBound(1)
    Dim j As Integer
    Dim x As Integer
    Dim s1 As String
    If array IsNot Nothing Then


        ' Loop over all elements.
        For j = 1 To bound0
            For x = 1 To bound1
                s1 = array(j, x)
                If s1 IsNot Nothing Then
                    If Not ComboBox1.Items.Contains(s1.ToString) Then
                        ComboBox1.Items.Add(s1.ToString)
                    End If
                End If
            Next
        Next
    End If

    If array IsNot Nothing Then
        ' Loop over all elements.
        For j = 1 To bound0
            For x = 1 To bound1
                s1 = array2(j, x)
                If s1 IsNot Nothing Then
                    If Not ComboBox2.Items.Contains(s1.ToString) Then
                        ComboBox2.Items.Add(s1.ToString)
                    End If
                End If
            Next
        Next
    End If
    w.Close(False)
    excel.Quit()

    ReleaseObject(excel.XlRangeValueDataType.xlRangeValueDefault)
    ReleaseObject(excel)
    ReleaseObject(array)
    ReleaseObject(array2)
    ReleaseObject(r)
    ReleaseObject(s)
    ReleaseObject(sheet)
    ReleaseObject(sheet2)
    ReleaseObject(w)
    ReleaseObject(bound0)
    ReleaseObject(bound1)
    ReleaseObject(j)
    ReleaseObject(x)
    ReleaseObject(s1)

我尝试释放所有引用的对象,但它仍然与 Excel 文档有连接。

我错过了一个对象吗?还是更大的?

我有另一个代码可以从表单复制到同一个 Excel 文档,并且不会打开任何进程。 (我必须终止从加载表单创建的 excel 进程才能使用代码复制数据)

任何帮助将不胜感激。

【问题讨论】:

标签: excel vb.net process


【解决方案1】:

想通了。

代码将停止运行,并且无法完成代码的发布对象部分。 使用调试我发现我收到了一条被静音的错误消息。我解决了错误消息,现在它运行正常。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多