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

Vba 单击“如何返回保存消息框”;否";替换文件,vba,excel,messagebox,savefiledialog,Vba,Excel,Messagebox,Savefiledialog,在Excel VBA中,我使用以下代码保存文件: fullFileName = Application.GetSaveAsFilename(...) ActiveWorkbook.SaveAs fullFileName 在所选名称已存在之前,此操作可以正常工作。然后,消息框提示:“是否应替换该文件?”。我想回答否,然后返回上一个消息框并选择另一个名称 相反,单击No会中断宏并产生错误 我怎样才能解决这个问题 (网站上有很多示例,展示了如何使用应用程序绕过此消息框。DisplayAlerts=F

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

fullFileName = Application.GetSaveAsFilename(...)
ActiveWorkbook.SaveAs fullFileName
在所选名称已存在之前,此操作可以正常工作。然后,消息框提示:“是否应替换该文件?”。我想回答
,然后返回上一个消息框并选择另一个名称

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

我怎样才能解决这个问题


(网站上有很多示例,展示了如何使用
应用程序绕过此消息框。DisplayAlerts=False
并进行保存。这不是我想要的!)

这通常是我使用的

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
子样本()
模糊完整文件名
fullFileName=Application.GetSaveAsFilename(_
fileFilter:=“文本文件(*.txt),*.txt”)
如果fullFileName为False,则
如果fileExists(fullFileName)=False,则
ActiveWorkbook.SaveAs fullFileName
其他的
MsgBox“文件存在。文件保存已中止”
如果结束
如果结束
端接头
公共函数fileExists(strFullPath作为变量)为布尔值
关于错误转到哇
如果不是Dir(strFullPath,vbDirectory)=vbNullString,则fileExists=True
哇
错误转到0
端函数
跟进

你是说像这样吗

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
子样本()
模糊完整文件名
作为布尔的Dim conti
conti=真
当conti=True时执行
fullFileName=Application.GetSaveAsFilename(_
fileFilter:=“文本文件(*.txt),*.txt”)
如果fullFileName为False,则
如果fileExists(fullFileName)=False,则
ActiveWorkbook.SaveAs fullFileName
conti=错误
其他的
MsgBox“文件已存在。将返回对话框”
如果结束
其他的
conti=错误
如果结束
环
端接头
公共函数fileExists(strFullPath作为变量)为布尔值
关于错误转到哇
如果不是Dir(strFullPath,vbDirectory)=vbNullString,则fileExists=True
哇
错误转到0
端函数

谢谢Siddhart。使用您的代码,当文件存在时,保存将中止。有没有办法单击“否,我不想替换现有文件”并返回到
GetSaveAsFilename
对话框?很简单。谢谢你的快速回复!