微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用VBA代码关闭Excel电子表格?

如何解决如何用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

解决方法

尝试使用

xlApp.Quit

将xlApp设置为空时,仅清除过程中的对象,而不对实际的Excel实例执行任何操作。设置XXX =什么都不允许您做的就是重用该对象。

,

您将需要合法关闭在中打开的工作簿

  xlApp.Workbooks.Close
  
EXITSUB:

这将关闭打开的实例。

在此之前,请杀死所有实例或重新启动计算机以清除所有打开的实例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。