MSAccess 2010 VBA Excel процесс не завершается
Я использую Window 7 с пакетом обновления 1 (SP1) и MS Office 2010. Я выполняю запросы в Access 2010 и записываю результаты в виде отчета в Excel 2010, и отметил, что экземпляр Excel не завершается из списка процессов. Чтобы убедиться, что это не мой код, я сократил его основы.
Следующий код открывает и завершает работу Excel, как и ожидалось:
Public Sub Test() Dim strRptDirPath As String: strRptDirPath = "C:\Projects\WeeklyAlarms\Report\" Dim xlApp As Object ' Dim xlWkBk As Object ' Dim xlWkSht As Object Dim strRptTl As String: strRptTl = "Report Template.xls" Dim strRptSht As String: strRptSht = "Rpt" Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False ' Set xlWkBk = xlApp.Workbooks.Open(strRptDir & strRptTl) ' Set xlWkSht = xlWkBk.Worksheets(strRptSht) ' ' xlWkSht.Cells(1, 1).Value = "TEST 1" ' xlWkSht.Cells(2, 2).Value = "TEST 2" ' xlWkSht.Cells(3, 3).Value = "TEST 3" ' ' xlWkBk.SaveAs (strRptDirPath & "TESTING.xls") ' xlWkBk.Close xlApp.Quit ' Set xlWkSht = Nothing ' Set xlWkBk = Nothing Set xlApp = Nothing End Sub
Однако, если я ссылаюсь на книгу, экземпляр процесса Excel не завершается. Поиск по темам разговоров делает ссылки на процесс, завершающийся после истечения времени ожидания, 'ping' период после закрытия Access - здесь это не так.
Public Sub Test() Dim strRptDirPath As String: strRptDirPath = "C:\Projects\WeeklyAlarms\Report\" Dim xlApp As Object Dim xlWkBk As Object ' Dim xlWkSht As Object Dim strRptTl As String: strRptTl = "Report Template.xls" Dim strRptSht As String: strRptSht = "Rpt" Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False Set xlWkBk = xlApp.Workbooks.Open(strRptDir & strRptTl) ' Set xlWkSht = xlWkBk.Worksheets(strRptSht) ' ' xlWkSht.Cells(1, 1).Value = "TEST 1" ' xlWkSht.Cells(2, 2).Value = "TEST 2" ' xlWkSht.Cells(3, 3).Value = "TEST 3" xlWkBk.SaveAs (strRptDirPath & "TESTING.xls") xlWkBk.Close xlApp.Quit ' Set xlWkSht = Nothing Set xlWkBk = Nothing Set xlApp = Nothing End Sub
Я не проверял ссылку на библиотеку объектов Microsoft Excel 14.0. Я не думаю, что сделал какие-либо глобальные справочные вызовы. Я не вижу, что я делаю неправильно.
1 ответ
Попробуйте заменить все после xlWkBk.SaveAs (strRptDirPath & "TESTING.xls")
линия с:
If Not xlWkBk Is Nothing Then
xlWkBk.Save
xlWkBk.Close
Set xlWkBk = Nothing
End If
If Not xlApp Is Nothing Then
xlApp.Quit
Set xlApp = Nothing
End If
Установка его таким образом гарантировала, что все закрывается, как и ожидалось