Saveas问题覆盖现有文件(Excel VBA)

时间:2013-04-12 09:27:27

标签: vba excel-vba excel

如果点击SaveAsNo,如果我点击Cancel工作正常,我有以下正确的宏,除了yes给我一个错误。

ActiveWorkbook.SaveAs Filename:=FileName, FileFormat:=xlWorkbook, ConflictResolution:=xlLocalSessionChanges

Application.DisplayAlert =True

但是当我来到SaveAs部分时,当我选择No进行保存时,会出现以下错误。  Excel消息:此位置已存在名为“.........”的文件。你想替换它吗?我点击“否”或cancel并获得运行时错误1004 .... 对象SaveAs的方法_Workbook失败。

我不想使用Application.DisplayAlerts = False,因为我希望用户知道有一个已经命名相同的文件。

  1. 为什么会出现此错误?为什么我不能选择'不'
  2. 我还有什么其他选项可以显示文件已经存在 在那里选择NoCancel,但不会收到运行时错误。?

1 个答案:

答案 0 :(得分:7)

试试这个方法。

我已对代码进行了评论,因此您无法理解它。如果你这样做,那么只需要问:)

Sub Sample()
    Dim fName As Variant

    '~~> Offer user to Save the file at a particular location
    fName = Application.GetSaveAsFilename

    '~~> Check if it is a valid entry
    If fName <> False Then
        '~~> Check before hand if the file exists
        If Not Dir(fName) <> "" Then
            '~~> If not then save it
            ActiveWorkbook.SaveAs Filename:=fName
        Else
            '~~> Trap the error and ignore it
            On Error Resume Next
            If Err.Number = 1004 Then
                On Error GoTo 0
            Else '<~~ If user presses Save
                ActiveWorkbook.SaveAs Filename:=fName, _
                FileFormat:=xlWorkbook, _
                ConflictResolution:=xlLocalSessionChanges
            End If
        End If
    End If
End Sub