2016-08-05 42 views
0

我想防止打开已打开的工作簿。我的工作簿包含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文件,然后弹出对话框“文件已经打开并重新打开文件将丢弃更改”,选择是,否和取消选项。

+0

_“双击存储在特定位置的工作簿图标”__你的意思是你有一些'GetOpenFilename()'方法运行或类似吗? – user3598756

回答

2

实际输出:当我双击excel文件时,文件已经打开,然后弹出对话框“文件已打开,文件重新放弃将丢弃更改”与是,否和取消选项。

这是默认行为,AFAIK不能更改。而且不应该是。至少你这样知道工作簿已经打开,你可以选择点击No。尽管如果你仍然点击Yes的警报,那么你不能责怪它的系统。你可以吗? ;)

想象一下,如果你确实设法得到你想要的东西,那么如果用户不知道你所做的是什么,就会认为鼠标不工作或者Excel应用程序出现问题。你为什么想让事情变得复杂?

+0

我正在使用Quotation Generation工具,所以无论何时用户双击打开工作簿,Userform都会被调用,并且我已经使用了Application.Visible = False,因此用户无法看到Excel表单,因此只有用户可以访问的东西形式,而不是Excel表格。但如果用户不知道工作簿已经打开,并且用户双击工作簿再次打开工作簿,那么“文件已打开”对话框将打开,并且由于此对话框,某种程度上excel工作表将对用户可见。 –

+0

你错过了一点......“你会得到一个警报”。您可以选择单击“否” –

+0

如果用户不知道工作簿已打开,并且用户双击工作簿以将其打开,它将使工作表与表单一起出现,而只有我想要保持可见的表单是表单而不是工作表,“文件已经打开”对话框提示不是一个实际的问题,但这使得工作表可见是我不想要的。因此无论如何防止工作表出现在使用此对话框的桌面上。 –

相关问题