我正在Access中构建一个数据库,我从Excel工作簿调查表中导入数据 . 我编写了一个Import-sub,用于选择,打开,检索数据并最终关闭工作簿 .
The problem is this: 由于某种原因,当我现在在我的计算机上打开任何excel工作簿时(在没有使用Access或Excel的时候),一些旧版本的调查问卷也会保持打开状态 . 此问题不会通过重新启动计算机而结束,而只能通过删除该特定问卷 - 工作簿来结束 . 但随后它开始与另一本工作簿发生 .
我有一个理论认为这可能是因为我 - 在我的import-sub中 - 打开了调查问卷,遇到了运行时错误,它在关闭工作簿之前结束了sub,并且工作簿仍然“开放” . 或者仍然存在活动链接 .
So I have two questions:
1.) 有谁知道如何解决这个问题?
2.) 通常没有关闭通过VBA打开的工作簿的后果吗?
我的相关代码是:
Dim MyXL As Excel.Application
Dim MyWB As Excel.Workbook
...
在很多事情发生之间,多次发生错误而中断程序 .
...
MyWB.Close False
MyXL.Quit
感谢任何帮助!
1 回答
你的理论很可能 . 如果您从未显示Excel应用程序,则会遇到错误,并且您的代码永远不会关闭工作簿,它将在后台保持打开状态,您的代码很可能会丢失对它的引用 . 下次打开Excel文件时,已打开(但从视图中隐藏)的Excel实例“拾取”请求并打开文件,同时显示仍然从宏打开的文件 .
1.) 您应该设置错误处理,以便在出现不可恢复的错误时关闭Workbook和Excel应用程序 .
如果您的代码中有其他错误处理语句,则始终重置为
On Error GoTo handle_Err
而不是GoTo 0
等 .2.) 没有关闭工作簿的唯一后果是显而易见的 - 它正在使用的系统资源,如果它是开放的编辑,没有其他人可以编辑它 .