確定資料夾和檔案是否存在
檔案:
要確定檔案是否存在,只需將檔名傳遞給 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
引數指定傳遞 vbDirectory
,Dir$()
函式還可用於確定資料夾是否存在。在這種情況下,傳遞的 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