使用FSO的VBA移动文件夹保持文件夹正在使用中

时间:2013-11-27 11:33:03

标签: vba excel-2007 filesystemobject

我使用以下代码循环浏览目录中的“.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',我会收到一条错误消息,说明该文件夹正被另一个程序使用。

如何阻止这种情况发生?

1 个答案:

答案 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档案