【发布时间】:2023-02-23 23:34:58
【问题描述】:
我在源中有超过 2000 个文件,我正在使用下面的代码移动它们。整个过程运行得非常好,但今天(两周后)当我再次开始移动文件时,它开始出错。错误是“运行时错误 58”“文件已经存在”
检查后,源文件夹和目标文件夹中没有这样的文件,所有文件名都彼此分开。即使我将 Source 文件夹清空(只是为了检查),它也会再次给出相同的错误。谁能告诉我我是否犯了任何错误,或者为什么即使两个文件夹都是空的也会出现这样的错误。
Function OldestFile(strFold As String) As String
Dim FSO As Object, Folder As Object, File As Object, oldF As String
Dim lastFile As Date: lastFile = Now
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(strFold)
For Each File In Folder.Files
If File.DateCreated < lastFile Then
lastFile = File.DateCreated: oldF = File.Name
End If
Next
OldestFile = oldF
End Function
Sub MoveOldestFile()
Dim FromPath As String, ToPath As String, fileName As String, limit As Long
FromPath = "C:\Users\user\Desktop\Source\"
ToPath = "C:\Users\user\Desktop\Destination\"
limit = 20
filesmoved = 0
fileName = OldestFile(FromPath)
Do Until fileName = "" Or filesmoved = limit
If Dir(ToPath & fileName) = "" Then
Name FromPath & fileName As ToPath & fileName
filesmoved = filesmoved + 1
End If
fileName = OldestFile(FromPath)
Loop
End Sub
【问题讨论】:
-
你能举一个发生这个错误的文件名的例子吗?可能是短文件名的问题
-
文件名是(例如)north East Feb 23, 2023 - In process
-
但问题是即使两个(源和目标)文件夹都是空的,它仍然在 Name FromPath & fileName As ToPath & fileName 行给出相同的错误
-
重命名时是否报错第一的文件或以后?
-
不,先生。它在移动某些文件后开始出错(例如,当它移动 20 个文件时,从 1000 个开始出错)
标签: excel vba filesystemobject