如果已经打开,请通过双击防止重新打开工作簿
Posted
技术标签:
【中文标题】如果已经打开,请通过双击防止重新打开工作簿【英文标题】:Prevent reopening workbook by double clicking if already open 【发布时间】:2016-08-05 08:30:55 【问题描述】:我想阻止打开已经打开的工作簿。 我的工作簿包含 VBA 用户表单。
通过双击存储在特定位置的工作簿图标触发重新打开工作簿的事件,并且之前打开并运行了相同的文件并运行 VBA 用户窗体。
我尝试了以下代码,但它无法帮助我阻止重新打开。
Private Sub Workbook_Open()
If ThisWorkbook.IsInplace = True Then
MsgBox "Workbook Already Open"
ThisWorkbook.Close (False)
Else
MsgBox "Single Instance Open"
End If
End Sub
预期输出: 当我在文件已经打开的情况下双击 excel 文件时,理想情况下它应该什么都不做(或者它可以覆盖工作簿)
实际输出: 当我在文件已经打开的情况下双击excel文件时,它会弹出对话框“文件已经打开,重新打开文件将放弃更改”,带有yes,no和cancel选项。
【问题讨论】:
"双击存储在特定位置的工作簿图标":你的意思是你有一些GetOpenFilename()
方法正在运行或类似的吗?
【参考方案1】:
实际输出:当我在文件已经打开的情况下双击excel文件时,它会弹出对话框“文件已经打开,重新打开文件将放弃更改”,带有yes,no和cancel选项。
这是默认行为,AFAIK 无法更改。而且它不应该那么好。至少通过这种方式您知道工作簿已经打开并且您可以选择单击No
。如果您仍然单击Yes
,请触发警报,那么您不能为此责备系统。你可以吗? ;)
想象一下,如果你确实设法得到了你想要的东西,那么如果用户不知道你做了什么,就会认为鼠标不工作或者 Excel 应用程序有问题。为什么要把事情复杂化???
【讨论】:
我正在开发报价生成工具,所以每当用户双击打开工作簿时,都会调用 Userform,并且我使用了 Application.Visible = False 以便用户看不到 Excel 表格,所以用户唯一可以访问的是表格,而不是 Excel 表格。但是如果用户不知道工作簿已经打开,并且如果用户双击工作簿再次打开它,那么“文件已经打开”对话框将打开,并且由于这个对话框,用户可以看到 Excel 工作表。 你没有抓住重点......“你会收到警报”。您可以选择点击“否” 如果用户不知道工作簿已打开并且用户双击工作簿将其打开,它将使工作表与表单一起出现,而我只想保持可见的是表单而不是工作表,“文件已打开”对话框提示不是实际问题,但使工作表可见是我不想要的。因此使用此对话框阻止工作表出现在桌面上的任何方法。以上是关于如果已经打开,请通过双击防止重新打开工作簿的主要内容,如果未能解决你的问题,请参考以下文章