第一章 入門篇
1.25 Dir語句
Dir可以返回一個(gè)指定文件夾下的文件名稱(包含后綴)。例如:
filename = Dir('F:\VBA學(xué)習(xí)\')
這樣,就會(huì)獲得'F:\VBA學(xué)習(xí)'目錄下的一個(gè)文件名,并把這個(gè)文件名賦值給filename變量。
需要注意的是,文件夾地址后面一定要加上'\',否則“VBA學(xué)習(xí)”會(huì)被當(dāng)成一個(gè)文件名進(jìn)行處理,而不是當(dāng)成一個(gè)文件夾處理。
Dir運(yùn)行一次只能得到一個(gè)文件名,為了得到下一個(gè)文件名,代碼這樣寫:
filename = Dir
Dir后面不寫任何參數(shù),就可以獲得'F:\VBA學(xué)習(xí)'目錄下的另一個(gè)文件名稱。這時(shí)候有人問了,為什么不能像原來那樣filename = Dir('F:\VBA學(xué)習(xí)\')寫呢?如果這樣寫,則會(huì)重新掃描'F:\VBA學(xué)習(xí)'文件夾,又會(huì)得到第一個(gè)文件名。
Dir配合do...loop循環(huán)語句,就可以得到一個(gè)文件夾下的所有文件名。以下是通用模板:
sub 獲取文件名()
dim filename$
filename = Dir('F:\VBA學(xué)習(xí)\')
do
filename = Dir
loop until filename=''
end sub
首先用filename = Dir('F:\VBA學(xué)習(xí)\')這條語句把'F:\VBA學(xué)習(xí)'目錄下的第一個(gè)文件名稱賦值給filename變量,算是對(duì)Dir語句的一個(gè)初始化,然后用do loop循環(huán)讓Dir語句遍歷'F:\VBA學(xué)習(xí)'目錄下的所有文件后,找不到新文件了返回空值,循環(huán)結(jié)束。
Dir函數(shù)支持通配符,若只想找某一類型的文件,就可以用通配符處理,如”*.wps”、”??.xls”。
例如:filename = Dir('F:\VBA學(xué)習(xí)\*.wps')
'獲得'F:\VBA學(xué)習(xí)'目錄下的后綴名為wps的所有文件
filename = Dir('F:\VBA學(xué)習(xí)\*VBA*.*')
'獲得'F:\VBA學(xué)習(xí)'目錄下的文件名稱包含“VBA”的所有文件
小程序:
查詢指定文件夾下的指定類型的文件,把文件列表寫到表格里去。
序號(hào) | 文件名稱 |
我們可以在該表格下選擇三個(gè)單元格,輸入以下內(nèi)容:
文件類型 | docx | 查詢 |
第一個(gè)單元格輸入“文件類型”,第二個(gè)單元格建立一個(gè)下拉列表(選擇該單元格,點(diǎn)擊“數(shù)據(jù)”菜單,選擇“下拉列表”,列表數(shù)據(jù)源來源于另一列單元格),第三個(gè)單元格插入一個(gè)命令按鈕(選擇該單元格,點(diǎn)擊“開發(fā)工具”,選擇“命令按鈕”,然后沿該單元格邊框畫出命令按鈕形狀,并把命令按鈕的Caption屬性,也就是它的名稱,改為“查詢”),就象下面這樣:
[b10]單元格的數(shù)據(jù)源于E列,在[c10]單元格插入了一個(gè)查詢按鈕。
Sub Dir獲取文件名()
Dim 地址$, filename$, n%, 類型$
Range('a2:b8').Clear
地址 = 'F:\VBA學(xué)習(xí)\'
類型 = [b10] '選取文件類型
filename = Dir(地址 & '*' & 類型)
Do
n = n + 1
Cells(n + 1 , 1) = n
Cells(n + 1 , 2) = filename
filename = Dir
Loop Until filename = ''
End Sub
選取文件類型后,點(diǎn)擊查詢按鈕,首先用filename = Dir(地址 & '*' & 類型)語句,利用“*”通配符,把'F:\VBA學(xué)習(xí)\'目錄下的符合選取類型的第一個(gè)文件名稱賦值給filename變量。然后Do Loop語句開始循環(huán),n變量從0開始,Cells(2 , 1) = 1,第二行第一個(gè)單元格的序號(hào)為1,Cells(2 , 2) = filename,第二行第二個(gè)單元格的內(nèi)容為第一個(gè)文件名稱。接著filename = Dir語句獲取符合條件的第二個(gè)文件名稱,再循環(huán)對(duì)第三行的單元格進(jìn)行賦值。依次循環(huán),就可以把該類型的文件名稱都寫入表格里了。
聯(lián)系客服