我需要创建一个循环,将编辑后的文件按数字顺序保存在文件夹中,但如果我再次运行宏,则需要保留最后一个数字:
wb.SaveAs "C:\User\Desktop\Data\" & i & ".dat"
i = i + 1
此处代码按顺序保存文件(1,2,3)。如果我再次运行宏,则需要保存(4,5,6)。
我尝试使用上面的循环来保存函数:
Do While Dir("C:\User\Desktop\Data\" & i & ".dat") = i
i = i + 1
Loop
但显然,我无法使用DIR
函数,因为我已经在循环结束时使用它来获取下一个文件,并且循环中断。
'Get next file name
MyFile = Dir
那么,有没有办法做到这一点?我试图创建一个函数来检查并返回true
或false
以确定具有该数字的文件是否已存在,但无法使其正常工作。谢谢你的帮助。
答案 0 :(得分:0)
您可以获取目录中最大的数字,并继续从那里开始?
此代码假定所有文件都是这样命名的:[numericalfilename].[extension]
,例如"143.dat"
。如果文件名中包含字母字符(除了扩展名)
定义Path
和Extension
变量后,您可以调用函数NextNumber
,它将为您提供[MaxNumber_In_Directory] + 1
通过设置i = NextNumber(Path, "*." & Ext)
Sub test()
Dim Path As String
Dim Ext As String
Dim i as Long
' ***** REPLACE VARIABLES ******
Path = "C:\New\New Folder"
Ext = "dat"
' ******************************
i = NextNumber("C:\New\New Folder", "*." & Ext)
' ********************************
' **** PERFORM SAVE CODE HERE ****
' ********************************
'I am not 100% sure of your save loop, you'll need to modify this
wb.SaveAs "C:\User\Desktop\Data\" & i & ".dat"
i = i + 1
End Sub
Public Function NextNumber(strPath As String, strExt As String) As Long
Dim vArray(500)
Dim i As Long
Dim length As Long
ChDir strPath
strExtension = Dir(strExt)
'Perform Loop
Do While strExtension <> ""
length = Len(strExtension) - (Len(strExt) - 2) - 1
vArray(i) = CLng(Mid(strExtension, 1, length))
i = i + 1
strExtension = Dir
Loop
NextNumber = WorksheetFunction.Max(vArray) + 1
End Function