VB Do While只适用于一次迭代



我以前从未用VB做过任何事情,我正试图解决这个脚本的一个小问题。基本上,脚本应该查找文件夹中的所有jpg,如果文件名已经存在,则将其从目标文件夹中删除,将值添加到表中,然后重命名源文件,使其存在于目标文件夹中。

这个脚本在一定程度上起作用,例如,如果文件不存在,它会重命名任何文件,但对于任何已经存在的文件,它只处理一个,然后结束。我可以多次运行它来清除其余的内容,但我宁愿它一次清除所有内容。我读了不少书,但看不出哪里出了问题。有人能说明这件事吗?

Public Function GetLPUFileAddress()
Dim strSourceFolder As String
Dim strFile As String
Dim strTargetFolder As String
Dim dbs As DAO.Database
Dim rstMgr As DAO.Recordset
strSourceFolder = "C:UsersImagesLPU-HOLDING"
strFile = Dir(strSourceFolder & "*.JPG")
strTargetFolder = "C:UsersImagesLPU"
Do While strFile <> ""
    If Dir(strTargetFolder & strFile) <> "" Then Kill strTargetFolder & strFile
    CurrentDb.Execute "INSERT INTO TBL_LPU ( File_Name, Import_Date ) VALUES ('" & strFile & "',Date())"
    Name strSourceFolder & strFile As strTargetFolder & strFile
    strFile = Dir
Loop
End Function

通过使用适当的过滤器(如"C:UsersImagesLPU*.JPG")调用Dir()函数,可以开始枚举并获得第一个文件名
之后,在没有任何参数的情况下重复调用Dir()函数,您将获得所有*.JPG文件名,每个调用一个
如果在任何时候使用参数调用Dir(),这将重置当前枚举并启动新枚举。

因此,在使用Dir()枚举时,不能使用Dir()来检查文件夹中是否存在文件。这将重置枚举。

您必须使用其他方法来检查文件的存在性,或者在不检查的情况下尝试杀死它,忽略错误。

最新更新