循环检查没有DIRfunction的文件存在

我需要做一个循环,将编辑的文件以数字顺序保存在一个文件夹中,但如果我再次运行macros,它需要保持从最后一个数字:

wb.SaveAs "C:\User\Desktop\Data\" & i & ".dat" i = i + 1 

这里代码按顺序保存文件(1,2,3)。 如果我再次运行macros,它需要保存(4,5,6)。

我试图用上面的这个循环来保存这个函数:

 Do While Dir("C:\User\Desktop\Data\" & i & ".dat") = i i = i + 1 Loop 

但显然,我不能使用DIR函数,因为我已经在循环的最后使用它来获得下一个文件,并且循环中断。

 'Get next file name MyFile = Dir 

那么,有什么办法可以做到吗? 我试图做一个函数,将检查并返回truefalse以确定具有该编号的文件是否已经存在,但无法使其工作。 谢谢您的帮助。

你可以得到目录中最大的数字,并继续从那里?

这段代码假定所有的文件都是这样命名的: [numericalfilename].[extension]文件名[numericalfilename].[extension]例如"143.dat" 。 如果文件名中有字母字符(除扩展名外),此代码将不起作用

一旦你定义了PathExtensionvariables,你可以调用函数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