languanzeng@163.com
事实证明,在beforesave事件中运行保存代码,会造出死循环,因此,用beforesave事件做另存为代码是行不通的,建议先录制一个宏(录制前设定快捷键,如Ctrl +z),然后将下面代码放到你所录制的宏里面:
Sub 另存为()
On Error Resume Next
Dim fs, f, fc, f1, s, t
t = 0
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("e:\")
Set fc = f.SubFolders
For Each f1 In fc
If f1.Name = "files" Then
t = 1
Exit For
End If
Next f1
If t = 0 Then MkDir ("e:\files")
Set s = fs.getfile("E:\files\" & [C2] & ".xls") '在e:\files文件夹中查找你的文件
If s <> "" Then
MsgBox "同名文件已存在,文件未保存!"
Exit Sub
Else:
ChDir "E:\files"
ActiveWorkbook.SaveAs Filename:="E:\files\" & [C2] & ".xls", FileFormat:=xlNormal
End If
End Sub
如需将文件另存为,则按 Ctrl +z
直接按保存命令,则在原位置保存原文件。
不知道百度上哪些方法是你重复了的。无法做答。
有一点可以肯定的是,用VBA来完成比较好
要不你就直接另存为你想要的。