【发布时间】:2020-02-25 14:32:13
【问题描述】:
我正在尝试将我的活动工作簿自动保存到我计算机上的另一个文件夹中,如果该文件夹中已经有一个以我的工作簿名称命名的文件,那么它应该使用“_v1”/“_v2”等保存on 在其名称的末尾。
我找到了这段代码,但它只适用于保存工作簿的当前文件夹。
Sub SaveNewVersion_Excel()
Dim FolderPath As String
Dim myPath As String
Dim SaveName As String
Dim SaveExt As String
Dim VersionExt As String
Dim Saved As Boolean
Dim x As Long
TestStr = ""
Saved = False
x = 2
VersionExt = "_v"
On Error GoTo NotSavedYet
myPath = "O:\Operations\Department\Data Bank Coordinator\_PROJECTS_\QC BeadRegion Check\Multi Ref Archiv"
myFileName = Mid(myPath, InStrRev(myPath, "\") + 1, InStrRev(myPath, ".") - InStrRev(myPath, "\") - 1)
FolderPath = Left(myPath, InStrRev(myPath, "\"))
SaveExt = "." & Right(myPath, Len(myPath) - InStrRev(myPath, "."))
On Error GoTo 0
If InStr(1, myFileName, VersionExt) > 1 Then
myArray = Split(myFileName, VersionExt)
SaveName = myArray(0)
Else
SaveName = myFileName
End If
If FileExist(FolderPath & SaveName & SaveExt) = False Then
ActiveWorkbook.saveAs FolderPath & SaveName & SaveExt
Exit Sub
End If
Do While Saved = False
If FileExist(FolderPath & SaveName & VersionExt & x & SaveExt) = False Then
ActiveWorkbook.saveAs FolderPath & SaveName & VersionExt & x & SaveExt
Saved = True
Else
x = x + 1
End If
Loop
Exit Sub
NotSavedYet:
MsgBox "This file has not been initially saved. " & _
"Cannot save a new version!", vbCritical, "Not Saved To Computer"
End Sub
Function FileExist(FilePath As String) As Boolean
Dim TestStr As String
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0
If TestStr = "" Then
FileExist = False
Else
FileExist = True
End If
End Function
它适用于当前文件夹,但是当我更改文件夹路径时它不起作用。 如果您能帮助我,我将不胜感激。
谢谢!
塞尔吉乌
【问题讨论】:
-
您在尝试指定文件路径时遇到什么错误?
-
我不确定您的
myPath字符串是否正确。它只是一个文件夹,在下一行中,您的代码会查找点 (.)... 无论如何,获取文件名的更简单方法是:myFileName = Right(myPath, Len(myPath) - InStrRev(myPath, "\")) -
myPath应该是完整的文件名称,而不仅仅是文件夹 -
我将 FolderPath 更改为 FolderPath = "D:_PROJECTS_\Multi Ref Archiv" 但不是将文件保存在那里,而是将文件保存在名称为“Multi Ref Archiv”的同一文件夹中,如果有另一个具有此名称的版本,则它正在编写名称 double。
-
I have found this code but it works just for the current folder, where the workbook is saved.你做了什么让它发挥作用?你能分享那部分代码吗?