VBA使用FSO移动文件夹可保持文件夹处于使用状态

VBA使用FSO移动文件夹可保持文件夹处于使用状态,vba,excel-2007,filesystemobject,Vba,Excel 2007,Filesystemobject,我正在使用以下代码循环浏览目录中的“.csv”文件并将其移动到新目录(strRootDir和strTargetDir是已启动的本地变量): 其中,“FileFolderExists”方法定义为: Public Sub FileFolderExists(strFullPath As String, bMkDir As Boolean) Dim bExists As Boolean If Not Dir(strFullPath, vbDirectory) = vbNullString

我正在使用以下代码循环浏览目录中的“.csv”文件并将其移动到新目录(strRootDir和strTargetDir是已启动的本地变量):

其中,“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',我会收到一条错误消息,说该文件夹正被另一个程序使用


如何阻止这种情况发生?

您看到的是一个重影文件。探险家有一个古怪的固执习惯:)

下面是演示“重影文件”的示例

只需发出
Dir
命令,提醒资源管理器在移动文件后该文件不再存在,一切都会正常:)

还有,为什么要使用fso来移动文件?这是一个单行命令

Name "C:\Path1\File1.Ext" As "C:\Path2\File2.Ext"

这也不会留下鬼文件

Wow!谢谢两种方法都很有效。将它们同时计时并将file1命名为file2大约快50%。
Ret = Dir(Path_And_FileName_Which_Was_Moved)
Name "C:\Path1\File1.Ext" As "C:\Path2\File2.Ext"