2016-08-05 43 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

如果用戶不知道工作簿已打開,並且用戶雙擊工作簿以將其打開,它將使工作表與表單一起出現,而只有我想要保持可見的表單是表單而不是工作表,「文件已經打開」對話框提示不是一個實際的問題,但這使得工作表可見是我不想要的。因此無論如何防止工作表出現在使用此對話框的桌面上。 –

相關問題