如何禁用保存为提示?

时间:2013-07-16 11:04:42

标签: excel-vba vba excel

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

2 个答案:

答案 0 :(得分:8)

尝试以下代码

总是很好的开发参考工作簿而不是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 :(得分:3)

您可以使用Workbook_BeforeSave对象中的ThisWorkbook事件来捕获用户选择SaveAs(或使用键盘快捷键),这将导致显示“另存为”提示并显示{{1}被设置为true。如果SaveAsUI为真,则表示用户正在尝试将文件另存为其他内容,因此您可以取消另存为操作。

打开Visual Basic窗口(Alt + F11)并将以下代码放在SaveAsUI中。

禁用另存为

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

如果您只想禁用“保存”操作,则只需要查找用户保存的位置,但SaveAsUI显示(即用户只是保存文件)。

停用保存

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

最后,请注意,如果用户只是关闭文件,用户仍会收到保存提示。用户将无法保存并且文件将关闭,但如果您希望体验更清晰,则需要进行其他更改。当用户关闭文件时,Excel会检查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 变量以查看文件是否已保存。如果为false,则会提示用户保存文件。为了防止这种情况,我们可以将此布尔值设置为true而不保存,从而“欺骗”Excel以认为文件已保存

禁用保存并另存为,包括用户尝试关闭文件后

ThisWorkbook.Saved代码后添加以下代码。

Workbook_BeforeSave