我使用以下代码循环浏览目录中的“.csv”文件并将它们移动到新目录(strRootDir和strTargetDir是已启动的局部变量):
Dim objFile As file
Dim objFSO As FileSystemObject: Set objFSO = New FileSystemObject
Dim objFolder As Folder: Set objFolder = objFSO.GetFolder(strRootDir)
For Each objFile In objFolder.Files
If InStr(1, objFile.Name, ".csv") Then
FileFolderExists strTargetDir, True
objFile.Move (strTargetDir)
End If
Next objFile
Set objFile = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
方法'FileFolderExists'定义为:
Public Sub FileFolderExists(strFullPath As String, bMkDir As Boolean)
Dim bExists As Boolean
If Not Dir(strFullPath, vbDirectory) = vbNullString Then bExists = True
If Not bExists And bMkDir Then MkDir strFullPath
End Sub
我的问题是,一旦这个过程完成,如果我尝试删除目录'strTargetDir',我会收到一条错误消息,说明该文件夹正被另一个程序使用。
如何阻止这种情况发生?
答案 0 :(得分:1)
你看到的是鬼文件。探险家有一种顽固的不可思议的习惯:)
以下是another scenario,其中说明了“Ghost文件”
只需发出Dir
命令即可提醒资源管理器移动文件后文件不再存在,并且每件事情都可以:)
Ret = Dir(Path_And_FileName_Which_Was_Moved)
为什么还要使用fso来移动文件?这是一行命令
Name "C:\Path1\File1.Ext" As "C:\Path2\File2.Ext"
这也不会留下GHOST档案