vba 自动保存工作本同名时怎样 不覆盖

WB.SaveAs ThisWorkbook.Path & "\" & "文件名" & ".xlsx" 'WB为新建工作本

WB.close

这样会提示同名是否覆盖
我不要覆盖要重命名(不要用时间什么的保存名字,我要用指定名字)
Application.DisplayAlerts = False 这个是强制覆盖也不行
求大神赐教一个办法同名时自动更名比如在文件名后面加-1,-2,-3等等
sub a
on error goto 1
....(中间省略)
1: i = i + 1
If i >= 10 Then Exit Sub
Application.DisplayAlerts = False
WB.SaveAs ThisWorkbook.Path & "\" & "文件名" & "-" & i& ".xlsx"
Application.DisplayAlerts = False
WB.Close
end sub

我这么弄 但会弹出对话框问是否覆盖,我选择否就会自动变成文件名-2, 如果-2存在再选否 就会改成文件名-3保存
我不想每次都手点 求大神指教
在线等啊~~!
急!!!

第1个回答  2014-03-21
把文件名放到保存之前去处理
1、首先生存一个文件名,如:strName=ThisWorkbook.Path & "\" & "文件名" & "-" & i& ".xlsx"

2、然后用: If Dir(strName) = "" Then 满足条件,说明此文件名可以用,然后保存。不满足条件,说明文件名存在,重新生产一个文件名。

另外一个方法,就是用时间来代替后面的i,如20140321115348,年月日时分秒,肯定不会重复的,呵呵本回答被提问者和网友采纳
第2个回答  2014-03-21
加一个时间戳,同名文件一个目录下就不可能同时存在的。
第3个回答  2014-03-21
Application.DisplayAlerts = False
WB.SaveAs ThisWorkbook.Path & "\" & "文件名" & "-" & i& ".xlsx"
WB.Close
Application.DisplayAlerts = True
第4个回答  2014-03-21
加个now
相似回答