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 = nothing 允许您做的就是重用该对象。
推荐阅读
- python - 通过 .msi 在 Windows 10 上安装 MySql Python 连接器 64 位时访问被拒绝错误
- javascript - 在 React 的单个组件中发送多个道具时遇到问题
- python - 有没有更好的方法从pdf中提取数据?
- powershell - Copy-Item:找不到接受参数“+”的定位参数
- nim-lang - 如何规范 Nim 中的文件路径?
- html - 如何在照片后立即对齐选择元素
- java - 在调用方法时,如何在循环内使用扫描仪输入的变量使用哨兵值时运行此 while 循环?
- bash - 用于监控日志文件和发送电子邮件的 Bash 脚本
- javascript - [TypeScript + React]。React TypeScript 组件可以作为 JS 功能组件的父级吗?
- typescript - Typescript 接口值作为枚举或记录