1. 在VBA中,dir函數可以返回一個文件夾下一個文件的名字(包含后綴)。
示例代碼:
filename = Dir("F:\userdata\Desktop\新建文件夾\")
dir后面的參數應該以反斜杠“\”結尾,這樣才能返回該文件夾下的文件名稱。否則“新建文件夾”會被當成一個文件名進行處理。
Dir運行一次只能得到一個文件名。為得到下一個文件名,代碼應該這樣寫:filename = Dir。
Dir后面不寫任何參數,如果寫了與前面相同的參數"F:\userdata\Desktop\新建文件夾\",則會重新掃描該文件夾,又得到第一個文件名,如果更改為其他文件夾,就掃描該文件夾,得到它的第一個文件名
如果文件夾中有n個文件,或者說有n個符合條件的文件,那么當Dir運行第n+1次時,則返回一個空字符串,代表已經查找完所有的文件。Dir運行第n+2次時,程序將報錯。
2. 掃描一個文件夾下所有文件的通用模板
Dim filename as string
filename = Dir("F:\userdata\Desktop\新建文件夾\") '可以更改為任意文件夾
Do while filename <> ""
相關操作
filename = Dir '獲取下一個文件名
Loop
3. Dir掃描符合條件的文件名(通配符*)
示例代碼:
F = Dir("F:\userdata\Desktop\新建文件夾\*.xls"),掃描所有后綴為.xls的文件。
4. 判斷一個文件是否存在
示例代碼:
F = Dir("F:\userdata\Desktop\新建文件夾\123.xls")
如果文件123.xls存在,則返回字符串123.xls,如果不存在,則返回空字符串。
5. 掃描文件和子文件夾名稱
一般情況下,Dir函數只返回文件名,而不返回子文件夾名。如果想要兩者都返回,則需要加上vbDirectory參數。示例代碼如下:
F = Dir("F:\userdata\Desktop\新建文件夾\" , vbDirectory)
特別要注意的是,子文件夾包括“.”和“..”兩個特殊名字,分別代表本目錄F:\userdata\Desktop\新建文件夾\及其父目錄F:\userdata\Desktop\。
Dir函數只能返回第一層的子文件夾和文件名,子文件夾下的文件與文件夾不返回。