2

我有以下正确的宏,除了如果我单击或如果我单击工作正常SaveAs会给我一个错误。NoCancelyes

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

Application.DisplayAlert =True

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

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

  1. 为什么我会收到此错误?为什么我不能选择“否”
  2. 我还有什么其他选项可以显示文件已经存在并选择NoCancel不得到运行时错误。?
4

1 回答 1

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
于 2013-04-12T09:34:18.997 回答