当前位置:  开发笔记 > 后端 > 正文

如何阻止Excel提示重新打开工作簿?

如何解决《如何阻止Excel提示重新打开工作簿?》经验,为你挑选了0个好方法。

我有一个包含VBA应用程序的只读Excel工作簿.应用程序保存需要保存在数据库中的所有数据,并且工作簿始终关闭而不保存(通过在BeforeClose中设置ThisWorkbook.Saved = True).

我有以下问题:

用户在Windows资源管理器中双击工作簿,打开工作簿.

用户在Windows资源管理器中双击工作簿上的第二次.

Excel提示:"MyWorkbook.xls已经打开.重新打开将导致您所做的任何更改被丢弃.是否要重新打开MyWorkbook.xls?"

如果用户单击"是",则重新打开工作簿,而不执行已打开的实例的BeforeClose事件处理程序.

这是我的应用程序中的一个问题,因为它意味着BeforeClose事件处理程序中的一些重要的清理代码不会被执行.

任何人都可以建议VBA解决方案.可能是:

禁止提示重新打开工作簿.而是默默地使用已经打开的实例.

以某种方式让BeforeClose或其他事件处理程序在原始实例关闭之前运行,因此我可以运行我的清理代码.

更新:

这是Excel 2003.

我可以通过在Workbook_SheetChanged事件处理程序中设置"ThisWorkbook.Saved = True"来消除不需要的提示(VBA应用程序负责保存需要保存在数据库中的任何数据,所以我不关心Excel保存更改).

但是这并没有解决我的问题:如果我这样做,那么双击浏览器中的工作簿会默默地重新打开工作簿,但仍然可以通过"BeforeClose"事件处理程序调用它.

所以重新解释一下这个问题:

无论如何使用VBA来检测和拦截以这种方式重新打开的工作簿?

更新2

接受BKimmel的答案 - 似乎没有VBA方法可以从工作簿中拦截此事件.

我将实现的解决方案是将应用程序代码移动到XLA加载项中,该加载项在加载工作簿时自动加载(如果尚未加载).加载项可以处理Open和BeforeClose事件,并存储执行清理所需的信息.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有