確定資料夾和檔案是否存在

檔案:

要確定檔案是否存在,只需將檔名傳遞給 Dir$ 函式並測試它是否返回結果。請注意,Dir$ 支援萬用字元,因此要測試特定檔案,應測試傳遞的 pathName 以確保它不包含它們。下面的示例會引發錯誤 - 如果這不是所需的行為,則可以將該函式更改為僅返回 False

Public Function FileExists(pathName As String) As Boolean
    If InStr(1, pathName, "*") Or InStr(1, pathName, "?") Then
        'Exit Function   'Return False on wild-cards.
        Err.Raise 52    'Raise error on wild-cards.
    End If
    FileExists = Dir$(pathName) <> vbNullString
End Function

資料夾(Dir $方法):

通過為可選的 attributes 引數指定傳遞 vbDirectoryDir$() 函式還可用於確定資料夾是否存在。在這種情況下,傳遞的 pathName 值必須以路徑分隔符(\)結束,因為匹配的檔案名將導致誤報。請記住,只有在最後一個路徑分隔符後才允許使用萬用字元,因此如果輸入包含萬用字元,下面的示例函式將丟擲執行時錯誤 52 - 錯誤的檔名或編號。如果這不是所需的行為,請取消註釋函式頂部的 On Error Resume Next。還要記住 Dir$ 支援相對檔案路徑(即 ..\Foo\Bar),因此只要當前工作目錄沒有改變,結果才能保證有效。

Public Function FolderExists(ByVal pathName As String) As Boolean
    'Uncomment the "On Error" line if paths with wild-cards should return False
    'instead of raising an error.
    'On Error Resume Next    
    If pathName = vbNullString Or Right$(pathName, 1) <> "\" Then
        Exit Function
    End If
    FolderExists = Dir$(pathName, vbDirectory) <> vbNullString
End Function

資料夾(ChDir 方法):

ChDir 語句也可用於測試資料夾是否存在。請注意,此方法將臨時更改執行 VBA 的環境,因此如果需要考慮,則應使用 Dir$ 方法。它確實具有對其引數不太寬容的優點。此方法還支援相對檔案路徑,因此與 Dir$ 方法具有相同的警告。

Public Function FolderExists(ByVal pathName As String) As Boolean
    'Cache the current working directory
    Dim cached As String
    cached = CurDir$

    On Error Resume Next
    ChDir pathName
    FolderExists = Err.Number = 0
    On Error GoTo 0
    'Change back to the cached working directory.
    ChDir cached
End Function