使用VBA处理保存错误消息

时间:2016-03-24 14:52:19

标签: excel vba

我有以下宏来自动保存工作簿:

ActiveWorkbook.SaveAs Filename:=Workbooks(2).Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.Close savechanges:=True

但问题是,如果目标文件夹已经包含此名称的文件,我会收到来自Excel的消息,说明此文件已存在以及是否要替换它。

我需要的是以下内容:

  • 如果用户选择Yes,则替换现有文件
  • 如果用户选择No(目前我收到运行时错误),那么它会在文件名末尾用V2保存它,如果存在,那么V3等等
  • 如果用户选择Cancel,则他们会看到一条消息您确定要取消。如果他们确认则取消,否则返回错误消息。

或者可以编辑代码,以便在saves as时检查文件是否已存在于文件夹中,如果文件已存在,则将其保存为v2。

2 个答案:

答案 0 :(得分:1)

您可能需要重构当前的代码才能使用它'原样' - 但我认为这是你正在寻找的逻辑:

Dim saveName As Variant

retry:

saveName = Application.GetSaveAsFileName

If Not saveName = False Then
    If Len(Dir$(saveName)) = 0 Then
        ActiveWorkbook.SaveAs saveName
    Else
        MsgBox "Workbook already exists, please choose a different name.", vbOkOnly
        GoTo retry:
    End If
Else
    MsgBox "User cancelled save.", vbInformation"
End If

答案 1 :(得分:0)

这样的东西
If Dir(strfilename) = "" Then
Else
    strfilename=Application.GetSaveAsFilename
End If

ActiveWorkbook.SaveAs strfilename, XlFileFormat.xlOpenXMLWorkbookMacroEnabled