如何禁用保存为提示?

Tin*_*ing 5 excel vba excel-vba

错误信息

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

嗨,尽管使用上面的代码,仍然偶尔出现另存为提示并影响程序.有谁知道如何完全阻止它?问题是,在我点击"保存"后,它会提醒我它仍处于打开状态.

在此输入图像描述

San*_*osh 9

试试下面的代码

它总是很好的开发参考工作簿而不是 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
Run Code Online (Sandbox Code Playgroud)


Jay*_*cal 5

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

打开 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如果您只想禁用“保存”操作,则只需查找用户正在保存的位置,但不显示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
Run Code Online (Sandbox Code Playgroud)

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