Visual basic - закрытие excel по-прежнему оставляет процессы

Я создал код для заполнения полей со списком в моей форме из файла 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)

Ive попытался освободить каждый объект, на который имеется ссылка, но он все еще связан с документом Excel.

Я пропустил объект? или что-то большее?

У меня есть другой код, который копирует из формы в тот же документ Excel и не оставляет открытых процессов. (Мне нужно убить процесс Excel, созданный при загрузке формы, чтобы иметь возможность использовать код для копирования данных)

Любая помощь будет принята с благодарностью.

Возможный дубликат Приложение не закрывается после вызова quit

zaggler 31.10.2018 11:41

Привет, это код, который я использовал для освобождения объектов. Это точно так же. Это странно, потому что это работает для другого сабвуфера, но не для этого.

Hulk Smash 93 31.10.2018 11:45

Возможный дубликат Процесс VB.NET Excel не закроется, несмотря ни на что

Craig 31.10.2018 14:52
2
3
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Догадаться.

Код перестанет работать и не завершит раздел кода, посвященный объекту выпуска. Используя отладку, я обнаружил, что получаю сообщение об ошибке, которое было отключено. Я разрешил сообщение об ошибке, и теперь оно работает нормально.

Спасибо за попытку помочь.

Другие вопросы по теме