2013-07-16 102 views
4

Error Message如何禁用保存爲提示?

 If IsWorkbookOpen("CONTRACT\CONTRACTLIST_Cement.xlsx") Then 
      x = 0 
     Else 
      Application.DisplayAlerts = False 
      ActiveWorkbook.Close savechanges:=True 
      Application.DisplayAlerts = True 
     End If 

嗨,儘管使用上面的代碼中,保存爲仍然提示,偶爾會出現,並影響程序。有誰知道如何完全阻止它?問題是,點擊「另存爲」後,它會提醒我它仍然處於打開狀態。

enter image description here

回答

8

試試下面的代碼

它總是好的,explcilty指工作簿,而不是ActiveWorkbook

Sub test() 
    If IsWorkbookOpen("CONTRACT\CONTRACTLIST_Cement.xlsx") Then 
      x = 0 
    Else 
     Application.DisplayAlerts = False 
     ThisWorkbook.Save 
     ThisWorkbook.Close False 
     Application.DisplayAlerts = True 
    End If 

End Sub 
1

您可以使用Workbook_BeforeSave事件在ThisWorkbook對象捕獲用戶選擇另存爲(或使用鍵盤快捷鍵),這會導致顯示「另存爲」提示並將SaveAsUI設置爲true。如果SaveAsUI爲真,這意味着用戶正在嘗試將文件另存爲其他內容,因此您可以取消另存爲操作。

打開Visual Basic窗口(Alt + F11)並將以下代碼放入ThisWorkbook

禁用另存爲

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    If (SaveAsUI = True) Then 
     MsgBox "Sorry. I can't have you saving this file as something else." 
     Cancel = True 
    End If 
End Sub 

您可以刪除MsgBox行,如果你想;我把它放在那裏作爲一個例子,如果你想通知功能被禁用

要禁用保存和另存爲功能的用戶,您將消除if語句並取消保存操作,不管是否顯示另存爲提示。

禁用保存,另存爲

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    MsgBox "Sorry. I can't have you saving this file at all." 
    Cancel = True 
End Sub 

如果你只是想禁用保存操作,你只需要尋找其中用戶節省的發生,但SaveAsUI是不會顯示(即用戶只是簡單地保存該文件)。

禁用另存

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    If (SaveAsUI = False) Then 
     MsgBox "Sorry. I can't have you saving any updates to this file." 
     Cancel = True 
    End If 
End Sub 

最後請注意,用戶仍然會得到一個提示保存,如果用戶直接關閉該文件。用戶將無法保存並且該文件將關閉,但如果您希望體驗更清晰一些,則需要進行其他更改。當用戶關閉文件時,Excel會檢查ThisWorkbook.Saved變量以查看文件是否已保存。如果它是假的,它會提示用戶保存文件。爲了防止這種情況,以及,我們可以設置這個布爾真不保存,因而「欺騙」的Excel,以爲該文件已保存

禁用保存,另存爲,包括用戶後試圖關閉文件

在您的Workbook_BeforeSave代碼後面添加以下代碼。

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    ActiveWorkbook.Saved = True 
    MsgBox "Click OK to continue closing this file. Changes will not be saved." 
End Sub 
+0

此代碼工作正常,只是試試看。 – mutanic

+0

Jaycal,用戶仍然可以通過按Ctrl + S來執行保存,也許你可以這樣說(在SaveAsUI之外):If(Cancel = false)Then Cancel = true – mutanic

+1

感謝您的關注。 OP實際上只是要求「另存爲」功能被禁用,所以這是我提供的代碼。爲了使答案更加完整,現在顯示如何禁用「僅保存」,「僅另存爲」或「另存爲」。 – Jaycal