保存Excel电子表格时如何覆盖“功能丧失”消息?

时间:2011-08-26 17:53:25

标签: vba excel-vba excel

我有一些VBA代码可以将电子表格保存在给定的文件名下。每当我保存它时,我都会收到一条关于“重大功能丧失”的警告消息,因为表格中有数据验证(尽管在我保存工作表后验证仍然有效)。

我想抑制此警告,但我认为不应该使用

Application.DisplayAlerts=false
mySheet.saveAs myFilename
Application.DisplayAlerts=true

因为我不想覆盖告诉用户已存在此名称的文件的警告,因为我想保护用户不会意外地保存文件)。如何指定我只想覆盖“功能丧失”警告?

编辑:我看到了一个类似问题的答案,建议以不同的格式保存工作簿。这在这里不起作用,因为我正在Excel 2007中开发,但试图容纳拥有Excel 2003的用户。

1 个答案:

答案 0 :(得分:2)

您可以捕获保存事件,然后提示用户输入信息。这是一个快速的,未经测试的例子,我为你拼凑:

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

    Dim iAnswer As Integer
    Dim wkb As Workbook
    Dim oSaveAs As FileDialog

    Set wkb = ActiveWorkbook
    Application.DisplayAlerts = False
    If gbUserGenerated Then
        iAnswer = MsgBox("Would you like to save over previous workbook?" _
                         , vbYesNo, "Workbook Already Exists")
        If iAnswer = 6 Then
            wkb.Save
        Else
            Set oSaveAs = Application.FileDialog(msoFileDialogSaveAs)
            oSaveAs.Show
        End If
    Else
        Set oSaveAs = Application.FileDialog(msoFileDialogSaveAs)
        oSaveAs.Show
    End If
    Application.DisplayAlerts = true


End Sub

gbUserGenerated只是一个全局变量(布尔值),告诉您是否创建了工作簿,或者是否是用户(如果用户总是创建工作簿,那么您根本不需要它)。

将代码放入VBE中的Microsoft Excel Object文件夹中,将其放入“This Workbook”模块中。

要了解有关活动的更多信息,请访问herehttp://www.cpearson.com/excel/Events.aspx