第一章 入門篇 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變量,,算是對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”的所有文件 小程序: 查詢指定文件夾下的指定類型的文件,,把文件列表寫到表格里去。
我們可以在該表格下選擇三個(gè)單元格,,輸入以下內(nèi)容:
第一個(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è)單元格的序號為1,,Cells(2 , 2) = filename,第二行第二個(gè)單元格的內(nèi)容為第一個(gè)文件名稱。接著filename = Dir語句獲取符合條件的第二個(gè)文件名稱,,再循環(huán)對第三行的單元格進(jìn)行賦值,。依次循環(huán),就可以把該類型的文件名稱都寫入表格里了,。 |
|