VBA“检查文件夹是否存在”仅在文件夹中有文件时有效

时间:2015-02-25 21:31:39

标签: vba excel-vba excel-2013 excel

我从www.rondebruin.nl获得了原始代码

它旨在测试目录中是否已存在文件夹。我修改它以满足我的需要,它似乎运作良好。

今天,我发现如果正在测试的文件夹不为空,它只能正常工作。如果它为空,则返回false(即文件夹不存在)。

我无法弄清楚为什么会这样。

FolderPath = sPfad
If Right(FolderPath, 1) <> "\" Then
    FolderPath = FolderPath & "\"
End If

TestStr = ""
On Error Resume Next
TestStr = Dir(FolderPath)
On Error GoTo 0
If TestStr = "" Then
    Test_Folder_Exist_With_Dir = False
    Exit Function
Else
    Test_Folder_Exist_With_Dir = True
    Exit Function
End If

我怀疑答案在于TestStr = Dir(FolderPath)但是还没有能够触及它的底部。 MSDN article基本上解释了Dir()始终返回的内容。但是,示例给出的都是存在要返回的文件。

我基本上需要得到它,以便它识别文件夹,无论其中是否有内容。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

如果文件夹存在,以下行返回大于0的数字,无论文件夹中是否包含任何文件

len(dir("C:\Users\user\Desktop\Tests\tt", vbDirectory))

答案 1 :(得分:2)

您可以尝试这样做:

Dim objFSO 
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(FolderPath)
...