3 回答

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

TA貢獻1993條經驗 獲得超6個贊
代碼修改下:
Dim spath As String, patha As String
Dim sfilename As String
Dim rown As Long
spath = Cells(2, 1).Value & Application.PathSeparator
sfilename = Dir(spath & "*", vbDirectory)
rown = 4
Do While sfilename <> ""
if sfilename<>"." and sfilename<>".." then
Cells(rown, 1).Value = sfilename
end if
sfilename = Dir
rown = rown + 1
Loop

TA貢獻1811條經驗 獲得超4個贊
If Dir("C:\test.xls") <>"" then
MsgBox "文件存在" '當C盤根目錄存在test.xls文件時提示“文件存在”
else
MsgBox "文件不存在"
End If
--------------------------------------------------------------------------------
Dir函數
返回一個 String,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標相匹配。
語法
Dir[(pathname[, attributes])]
Dir 函數的語法具有以下幾個部分:
部分 描述
pathname 可選參數。用來指定文件名的字符串表達式,可能包含目錄或文件夾、以及驅動器。如果沒有找到 pathname,則會返回零長度字符串 ("")。
attributes 可選參數。常數或數值表達式,其總和用來指定文件屬性。如果省略,則會返回匹配 pathname 但不包含屬性的文件。
設置值
attributes 參數的設置可為:
常數 值 描述
vbNormal 0 (缺省) 指定沒有屬性的文件。
vbReadOnly 1 指定無屬性的只讀文件
vbHidden 2 指定無屬性的隱藏文件
VbSystem 4 指定無屬性的系統文件
vbVolume 8 指定卷標文件;如果指定了其它屬性,則忽略vbVolume
vbDirectory 16 指定無屬性文件及其路徑和文件夾。
注意 這些常數是由 VBA 所指定的,在程序代碼中的任何位置,可以使用這些常數來替換真正的數值。
說明
Dir 支持多字符 (*) 和單字符 (?) 的通配符來指定多重文件。
由于 Macintosh 不支持通配符,使用文件類型指定文件組??梢允褂?MacID 函數指定文件類型而不用文件名。比如,下列語句返回當前文件夾中第一個TEXT文件的名稱:
Dir("SomePath", MacID("TEXT"))
為選中文件夾中所有文件,指定一空串:
Dir("")
在 Microsoft Windows 中,如果在Dir函數中使用MacID函數,將產生錯誤。
任何大于256的attribute值都被認為是MacID 函數的值。
在第一次調用 Dir 函數時,必須指定 pathname,否則會產生錯誤。如果也指定了文件屬性,那么就必須包括 pathname。
Dir 會返回匹配 pathname 的第一個文件名。若想得到其它匹配 pathname 的文件名,再一次調用 Dir,且不要使用參數。如果已沒有合乎條件的文件,則 Dir 會返回一個零長度字符串 ("")。一旦返回值為零長度字符串,并要再次調用 Dir 時,就必須指定 pathname,否則會產生錯誤。不必訪問到所有匹配當前 pathname 的文件名,就可以改變到一個新的 pathname 上。但是,不能以遞歸方式來調用 Dir 函數。以 vbDirectory 屬性來調用 Dir 不能連續地返回子目錄。
提示 由于文件名并不會以特別的次序來返回,所以可以將文件名存儲在一個數組中,然后再對這個數組排序。
添加回答
舉報