循环来检查文件是否存在,而不DIR功能
问题描述:
我需要做一个循环,将编辑后的文件保存在数字顺序的文件夹中,但如果我再次运行宏,它需要从最后一个数字不断:循环来检查文件是否存在,而不DIR功能
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
是否具有该编号的文件已经存在,但无法使其工作。谢谢您的帮助。
答
你可以得到目录中最大的数字,并继续从那里?
此代码假设所有文件均按如下名称命名:[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
+0
是的,谢谢你,我设法使你的代码工作。 – Mike
可以使用'filesystemobject'检查文件是否存在:它有一个'FILEEXISTS()'方法。 https://msdn.microsoft.com/en-us/library/x23stk5t(v=vs.84).aspx –
嗡嗡声,感谢提示,我不知道如何使用它,但我会继续努力。 – Mike
请参阅下面@Mike,让我知道它是否符合你的要求... –