旧工作簿(曾经由VBA打开)在我打开另一个Excel文件时保持打开状态

问题描述 投票:1回答:2

我正在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 vba excel-vba access-vba
2个回答
0
投票

您的理论很可能。如果您从不显示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。)

不关闭工作簿的唯一后果是显而易见的后果-它正在使用的系统资源,并且,如果打开该资源可以进行编辑,则没有其他人可以对其进行编辑。

0
投票

我确实遇到了同样的问题,发现Excel将在您启动Excel时打开的文件存储在文件夹(XLSTART)中。我的路径是:“ c:\ USERS \ MyUserName \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART”

© www.soinside.com 2019 - 2024. All rights reserved.