Я немного заржавел на своем VB и сейчас у меня нет доступа к Visual Studio, чтобы проверить это, но я попытаюсь написать код из памяти.
Проблема, с которой вы сталкиваетесь, состоит в том, что установка объекта равным Nothing по-прежнему оставляет объект, выделенный в памяти, и не удаляет объект полностью. Даже методы Close () и Quit () объекта по-прежнему оставляют его выделенным в памяти на случай, если программе понадобится доступ к ним позже. Метод Kill () работает, потому что он просто убивает приложение Excel, работающее в памяти, которое закрывает все открытые документы Excel, а также документы, используемые объектами COM. Что вы хотите сделать, так это избавиться от определенных COM-объектов, которые использует ваше приложение.
Попробуйте это изменение в своем коде.
Dim aplicacaoexcel As New Excel.Application
Dim livroexcel As Object
Dim folhaexcel As Excel.Worksheet
livroexcel = aplicacaoexcel.Workbooks.Open("C:\Users\LPO1BRG\Desktop\Software Fiabilidade\Tecnicos.xlsx", UpdateLinks:=False, ReadOnly:=False, Password:="qmm7", WriteResPassword:="qmm7")
folhaexcel = livroexcel.sheets("Folha1")
aplicacaoexcel.DisplayAlerts = False
aplicacaoexcel.Visible = False
DisposeComObj(folhaexcel)
DisposeComObj(livroexcel)
DisposeComObj(aplicacaoexcel)
Затем добавьте следующее в ваше приложение.
Private Sub DisposeComObj(ByRef Reference As Object)
Try
Do Until _
System.Runtime.InteropServices.Marshal.ReleaseComObject(Reference)<=0
Loop
Catch
Finally
Reference = Nothing
End Try
End Sub
Надеюсь, моя память хорошо мне служит. Я не писал никакого кода на VB или C # более года и чувствую себя очень не на практике. Я видел твой вопрос только потому, что нажал не на ту ссылку и вспомнил, как я боролся со сборкой мусора, когда начинал программировать.