3 回答

TA貢獻1862條經(jīng)驗 獲得超6個贊
Dir函數(shù)
返回一個 String,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標相匹配。
函數(shù)說明:
Dir 支持多字符 (*) 和單字符 (?) 的通配符來指定多重文件。
由于 Macintosh 不支持通配符,使用文件類型指定文件組??梢允褂?MacID 函數(shù)指定文件類型而不用文件名。比如,下列語句返回當前文件夾中第一個TEXT文件的名稱:Dir("SomePath", MacID("TEXT"))
為選中文件夾中所有文件,指定一空串:Dir("")
在 Microsoft Windows 中,如果在Dir函數(shù)中使用MacID函數(shù),將產(chǎn)生錯誤。
任何大于256的attribute值都被認為是MacID 函數(shù)的值。
在第一次調(diào)用 Dir 函數(shù)時,必須指定 pathname,否則會產(chǎn)生錯誤。如果也指定了文件屬性,那么就必須包括 pathname。
Dir 會返回匹配 pathname 的第一個文件名。若想得到其它匹配 pathname 的文件名,再一次調(diào)用 Dir,且不要使用參數(shù)。如果已沒有合乎條件的文件,則 Dir 會返回一個零長度字符串 ("")。一旦返回值為零長度字符串,并要再次調(diào)用 Dir 時,就必須指定 pathname,否則會產(chǎn)生錯誤。不必訪問到所有匹配當前 pathname 的文件名,就可以改變到一個新的 pathname 上。但是,不能以遞歸方式來調(diào)用 Dir 函數(shù)。以 vbDirectory 屬性來調(diào)用 Dir 不能連續(xù)地返回子目錄。
提示 由于文件名并不會以特別的次序來返回,所以可以將文件名存儲在一個數(shù)組中,然后再對這個數(shù)組排序。
函數(shù)示例:
Debug.Print Dir("F:\TEST.xls") ’返回"TEST.xls"
Debug.Print
Dir("F:\*.xls") ’返回按條件第一個找到的文件名。
Debug.Print
Dir("F:\*.txt",vbReadOnly) ’返回第一個只讀的txt文件
以下過程可顯示C盤根目錄下的所有目錄.
Sub DirC()
MyPath = "c:\"
MyName = dir(MyPath, vbDirectory) ' 找尋第一項。
Do
While MyName <> "" ' 開始循環(huán)。
' 跳過當前的目錄及上層目錄。
If MyName
<> "." And MyName <> ".." Then
' 使用位比較來確定 MyName
代表一目錄。
If (GetAttr(MyPath & MyName) And vbDirectory) =
vbDirectory Then
Debug.Print MyName '
如果它是一個目錄,將其名稱顯示出來。
End If
End If
MyName = dir '
查找下一個目錄。
Loop

TA貢獻1833條經(jīng)驗 獲得超4個贊
Dir 函數(shù)
語法:Dir[(pathname[, attributes])]
兩個參數(shù)都是可選的,attributes表示文件屬性。
功能:返回一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標相匹配。
說明:在第一次調(diào)用 Dir 函數(shù)時,必須指定 pathname,否則會產(chǎn)生錯誤。如果也指定了文件屬性,那么就必須包括 pathname。
Dir 會返回匹配 pathname 的第一個文件名。若想得到其它匹配 pathname 的文件名,再一次調(diào)用 Dir,且不要使用參數(shù)。如果已沒有合乎條件的文件,則 Dir 會返回一個零長度字符串 ("")。一旦返回值為零長度字符串,并要再次調(diào)用 Dir 時,就必須指定 pathname,否則會產(chǎn)生錯誤。不必訪問到所有匹配當前 pathname 的文件名,就可以改變到一個新的 pathname 上。但是,不能以遞歸方式來調(diào)用 Dir 函數(shù)。以 vbDirectory 屬性來調(diào)用 Dir 不能連續(xù)地返回子目錄。
示例:
Debug.Print Dir("F:\TEST.xls") ’返回"TEST.xls"
Debug.Print Dir("F:\*.xls") ’返回按條件第一個找到的文件名。
Debug.Print Dir("F:\*.txt",vbReadOnly) ’返回第一個只讀的txt文件
以下過程可顯示C盤根目錄下的所有目錄.
Sub DirC()
MyPath = "c:\"
MyName = dir(MyPath, vbDirectory) ' 找尋第一項。
Do While MyName <> "" ' 開始循環(huán)。
' 跳過當前的目錄及上層目錄。
If MyName <> "." And MyName <> ".." Then
' 使用位比較來確定 MyName 代表一目錄。
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' 如果它是一個目錄,將其名稱顯示出來。
End If
End If
MyName = dir ' 查找下一個目錄。
Loop
End Sub
以下過程利用遞歸可以查找目錄和子目錄下的所有文件。
Public Sub FindFile(mPath As String, Optional sFile As String = "")
On Error Resume Next
Dim s As String, sDir() As String
Dim i As Long, d As Long
If Right(mPath, 1) <> "\" Then
mPath = mPath & "\"
End If
'查找目錄下的文件
s = dir(mPath & sFile, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
Debug.Print mPath & s
s = dir
Loop
'查找目錄下的子目錄
s = dir(mPath, vbArchive + vbDirectory + vbHidden + vbNormal + vbReadOnly + vbSystem)
Do While s <> ""
If s <> "." And s <> ".." Then
If (GetAttr(mPath & s) And vbDirectory) = vbDirectory Then
d = d + 1
ReDim Preserve sDir(d)
sDir(d) = mPath & s
End If
End If
s = dir
Loop
'開始遞歸
For i = 1 To d
FindFile sDir(d) & "\"
Next

TA貢獻1946條經(jīng)驗 獲得超3個贊
dirname是一個自定義變量的名稱
Dir是一個函數(shù)
--------------
Dir 函數(shù)示例
本示例使用 Dir 函數(shù)來檢查某些文件或目錄是否存在。在 Macintosh 計算機上,默認驅動器名稱是 “HD” ,并且路徑部分由冒號取代反斜線隔開。而且 Microsoft Windows 的通配符在 Mac 中可以作為有效字符出現(xiàn)在文件名中。也可以使用 MacID 函數(shù)來指定文件組。
Dim MyFile, MyPath, MyName
' 返回“WIN.INI”(在 Microsoft Windows 中) (如果該文件存在)。
MyFile = Dir("C:\WINDOWS\WIN.ini")
' 返回帶指定擴展名的文件名。如果超過一個 *.ini 文件存在,
' 函數(shù)將返回按條件第一個找到的文件名。
MyFile = Dir("C:\WINDOWS\*.ini")
' 若第二次調(diào)用 Dir 函數(shù),但不帶任何參數(shù),則函數(shù)將返回同一目錄下的下一個 *.ini 文件。
MyFile = Dir
添加回答
舉報