我有以下宏来自动保存工作簿:
ActiveWorkbook.SaveAs Filename:=Workbooks(2).Path & "\" & ActiveWorkbook.Name
ActiveWorkbook.Close savechanges:=True
但问题是,如果目标文件夹已经包含此名称的文件,我会收到来自Excel的消息,说明此文件已存在以及是否要替换它。
我需要的是以下内容:
Yes
,则替换现有文件No
(目前我收到运行时错误),那么它会在文件名末尾用V2保存它,如果存在,那么V3等等Cancel
,则他们会看到一条消息您确定要取消。如果他们确认则取消,否则返回错误消息。或者可以编辑代码,以便在saves as
时检查文件是否已存在于文件夹中,如果文件已存在,则将其保存为v2。
答案 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