Как правильно закрыть excel в VB.NET-что?
Я совершенно новичок в программировании и люблю изучать новые вещи, особенно код. Не могли бы вы помочь мне решить эту проблему?Как правильно закрыть excel после его открытия? Я много искал, и есть разные способы, но каков правильный способ закрытия excel(release Excel COM objects). Это мой код. Пожалуйста, поправьте меня.
Dim xlApp As Excel.Application = Nothing Dim xlWorkBooks As Excel.Workbooks = Nothing Dim xlWorkBook As Excel.Workbook = Nothing Dim xlWorkSheet As Excel.Worksheet = Nothing Dim misValue As Object = System.Reflection.Missing.Value Dim t As Integer Dim s As Integer xlApp = New Excel.Application xlWorkBooks = xlApp.Workbooks xlWorkBook = xlWorkbooks.Add(xlPath) xlWorkSheet = xlWorkBook.Sheets("Payment Voucher Printing") xlWorkSheet.Cells(t + 3, s + 8) = VOUCHER_NUMBERTextBox.Text() xlWorkSheet.Cells(t + 6, s + 8) = DATE_OF_PAYMENTTextBox.Text() Try If MsgBox("WOULD YOU LIKE TO SEE THE DATA IN EXCEL?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then xlWorkSheet.SaveAs(xlPath) Process.Start(xlPath) Else System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp.ActiveWorkbook) xlApp.ActiveWorkbook.Close() xlWorkBook = Nothing xlWorkBook.Close() xlApp.Quit() 'releaseobject in reverse order ReleaseObject(xlWorkSheet) ReleaseObject(xlWorkBook) ReleaseObject(xlApp) Exit Sub End If System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp.ActiveWorkbook) xlApp.ActiveWorkbook.Close() 'xlWorkBook = Nothing xlWorkBook.Close() xlApp.Quit() ReleaseObject(xlWorkSheet) ReleaseObject(xlWorkBook) ReleaseObject(xlApp) Catch ex As Exception End Try End Sub Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing 'Finally 'GC.Collect() End Try End Sub
Что я уже пробовал:
Проблема в том, что когда я пытаюсь запустить это на другом компьютере, экспортированные данные теряются и даже линии сетки excel теряются.
Richard MacCutchan
Вы должны закрыть свою рабочую книгу и выйти из xlApp перед вызовом процесса.Начать.
Maciej Los
Я не могу воспроизвести ваш вопрос. Вы должны отладить свою программу.
Member 13890537
Хорошо, сэр, Спасибо за ваш ответ. У меня нет выбора, кроме как убить процесс и удалить какой-то код, например System.Runtime.InteropServices.Маршал.ReleaseComObject(xlApp.ActiveWorkbook)ниже else и end if. и просто убейте процесс.
Maciej Los
Взгляните на комментарий Ричарда. Может, он и прав.