单击“否”替换文件时如何返回保存消息框

Posted

技术标签:

【中文标题】单击“否”替换文件时如何返回保存消息框【英文标题】:How to come back to Save message box when clicking "No" to replace file 【发布时间】:2012-07-31 10:37:40 【问题描述】:

在 Excel-VBA 中,我使用以下代码保存文件:

fullFileName = Application.GetSaveAsFilename(...)
ActiveWorkbook.SaveAs fullFileName

在选择的名称已经存在之前,这可以正常工作。然后消息框提示:“是否应该替换文件?”。我想回复No,然后回到上一个消息框,选择另一个名字。

相反,单击No 会中断宏并产生错误。

我该如何解决这个问题?

(网络上有很多例子展示了如何使用Application.DisplayAlerts=False绕过这个消息框并保存。这不是我想要的!)

【问题讨论】:

【参考方案1】:

这就是我通常使用的...

Sub Sample()
    Dim fullFileName

    fullFileName = Application.GetSaveAsFilename( _
                   fileFilter:="Text Files (*.txt), *.txt")
    If fullFileName <> False Then
        If fileExists(fullFileName) = False Then
            ActiveWorkbook.SaveAs fullFileName
        Else
            MsgBox "File Exists. File Save Aborted"
        End If
    End If
End Sub

Public Function fileExists(strFullPath As Variant) As Boolean
    On Error GoTo Whoa
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then fileExists = True
Whoa:
    On Error GoTo 0
End Function

跟进

你的意思是这样吗?

Sub Sample()
    Dim fullFileName
    Dim conti As Boolean

    conti = True

    Do While conti = True
        fullFileName = Application.GetSaveAsFilename( _
                       fileFilter:="Text Files (*.txt), *.txt")
        If fullFileName <> False Then
            If fileExists(fullFileName) = False Then
                ActiveWorkbook.SaveAs fullFileName
                conti = False
            Else
                MsgBox "File Exists. Returning you back to the dialog box"
            End If
        Else
            conti = False
        End If
    Loop
End Sub

Public Function fileExists(strFullPath As Variant) As Boolean
    On Error GoTo Whoa
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then fileExists = True
Whoa:
    On Error GoTo 0
End Function

【讨论】:

谢谢悉达多。使用您的代码,当文件存在时,保存被中止。有没有办法点击“不,我不想替换现有文件”并返回GetSaveAsFilename对话框? 就是这样。感谢您的快速回复!

以上是关于单击“否”替换文件时如何返回保存消息框的主要内容,如果未能解决你的问题,请参考以下文章

js三大弹出消息框

如果单击保存文件对话框上的取消按钮怎么办?

MsgBox 出现多次

我如何从数据库中读取值并在消息框中返回它

javaSwing 关闭窗口,弹出消息框,无论我点击是,否 都关闭窗口,见代码!

在后面的 C# 代码中显示“是/否”警报框