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