2013-11-27 51 views
3

我正在使用下面的代碼循環訪問目錄中的'.csv'文件並將它們移動到新目錄(strRootDir和strTargetDir是已啓動的局部變量):使用FSO的VBA移動文件夾使文件夾保持使用

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

你看到的是一個Ghost文件。該瀏覽器也被離奇的習慣頑固:)

這裏是another scenario這說明了「鬼文件」

只是發出一個Dir命令,提醒你移動文件和每一個之後,該文件不再存在探險事情會好的:)

Ret = Dir(Path_And_FileName_Which_Was_Moved) 

另外爲什麼使用fso移動文件?下面是一個命令行的

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

這也不會留下ghost文件

+0

哇!謝謝。這兩種方法都很好。對它們進行計時並將名稱file1作爲file2大約快50%。 – GreenyMcDuff

相關問題