首页 文章

当我打开另一个excel文件时,旧工作簿(一旦由VBA打开)保持打开状态

提问于
浏览
1

我正在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 回答

  • 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.) 没有关闭工作簿的唯一后果是显而易见的 - 它正在使用的系统资源,如果它是开放的编辑,没有其他人可以编辑它 .

相关问题