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