MSAccess 2010 VBA Excel процесс не завершается

Я использую Window 7 с пакетом обновления 1 (SP1) и MS Office 2010. Я выполняю запросы в Access 2010 и записываю результаты в виде отчета в Excel 2010, и отметил, что экземпляр Excel не завершается из списка процессов. Чтобы убедиться, что это не мой код, я сократил его основы.

  1. Следующий код открывает и завершает работу 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
    
  2. Однако, если я ссылаюсь на книгу, экземпляр процесса 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

Установка его таким образом гарантировала, что все закрывается, как и ожидалось

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