首页 > 解决方案 > 如何在 VBA 代码中关闭 Excel 电子表格?

问题描述

我在下面有以下例程,用于打开 Excel 电子表格,然后逐行将结果导入传入的表中。它工作正常,但问题是如果我再次尝试打开同一个电子表格我收到一条消息,指出该文件正在使用中,我必须按 Ctrl-Alt-Del 关闭 Excel,然后才能再次使用它。我认为 Set mySheet=Nothing 和 Set xlApp=Nothing 会释放文件,但显然不会。我还能做些什么来确保 Access 释放 Excel 文件?提前致谢!

Public Sub MakeTempTable(strFilePath As String, tablename As String)
    Dim mySheet As Object
    Dim xlApp As Object
    Dim rs As DAO.Recordset
    Dim sql As String
    sql = "DELETE * FROM " & tablename
    DoCmd.RunSQL sql
    
    Set rs = CurrentDb.OpenRecordset(tablename)
    
    Set xlApp = CreateObject("Excel.Application")
    Set mySheet = xlApp.Workbooks.Open(strFilePath).Sheets(1)
    xlApp.Visible = False
    Set mySheet = xlApp.Sheets("Input")
    
    Dim dRows As Double
    dRows = 1
    Dim dRow As Double, dCol As Double
    dRow = 2
    On Error GoTo ERR
    Do
        dCol = 1
        rs.AddNew
        If mySheet.cells(dRow, 3) = "" Then Exit Do
        Do
            If mySheet.cells(dRow, dCol).Value <> "_END_" Then
                rs.Fields(dCol).Value = Nz(mySheet.cells(dRow, dCol).Value, "")
            dCol = dCol + 1
            Else
                Exit Do
            End If
        Loop
        rs.Update
        dRow = dRow + 1
    Loop

EXITSUB:
    Set mySheet = Nothing
    Set xlApp = Nothing
    Exit Sub
ERR:
    If ERR.Number = 3265 Then MsgBox "The species selected are incompatible. Canceling import.", vbCritical, "IMPORT ERROR"
    GoTo EXITSUB
End Sub

标签: excelvbafilems-access

解决方案


尝试使用

xlApp.Quit

当您将 xlApp 设置为空时,您只是在清除过程中的对象,您没有对实际的 Excel 实例执行任何操作。所有设置 XXX = nothing 允许您做的就是重用该对象。


推荐阅读