在Excel中利用VBA能夠輕松遍歷文件夾中的每個文件,並能將獲取的每個文件名字添加到單元格中,制成文件目錄。
實例描述:小張是一位影視作品愛好者,在電腦硬盤上分門別類地收藏了大量影視作品(圖1)。他想將各個類別文件夾中影視資料的文件名制成目錄存放到Excel工作表中。如果一個一個文件名去復制粘貼到工作表中,這樣的工作量是可想而知的。那有沒有什麼好的辦法來幫助小張解決這個難題呢?
實例分析:我們想,既然不同類型的影片存放在不同的文件夾中,那麼我們可以遍歷每個文件夾中的影視文件並獲取它們的文件名,然後在不同的工作表中進行查找。如果工作表中已經存在,就不要添加了,否則就在相應的工作表中添加一條件記錄。那如何實現相應的任務呢?請跟我來做吧!
用VBA遍歷文件夾
這個過程主要是在Excel中編寫VBA代碼,通過代碼遍歷文件夾中的每個文件並獲取相應的文件名。一提到編寫代碼,你可能就有些犯暈了。其實,程序代碼也沒那麼神秘,在這裡你可先將我的代碼輸入或復制到你的文件中,然後看看我的解釋,一切就OK了!
首先,打開Excel 2003,點擊“工具→宏→Visual Basic編輯器”菜單,這時就會彈出Microsoft Visual Basic程序窗口,也就是VBA的編輯器。在VBA編輯器窗口中選擇“插入→模塊”菜單,這時在右側可以看到空白的代碼編輯區域,我們可以嘗試著輸入圖中代碼(圖2)。代碼下載地址:http://iask.sina.com.cn/u/ish?uid=1704202287
在上述代碼中,共編寫了兩個過程,分別為FileList和ml。FileList這個過程的作用是遍歷參數Path所代表的文件夾及其子文件夾中的文件,並把根據子文件夾的名字在Excle中建立工作表。其中,在FileList過程中,FileSystemObject的簡稱是FSO,當然也就是我們的俗稱FSO組件了。FSO,正如UFO般令人激動、令人神往,當然更多的亦是讓人歡喜讓人憂。君不見某空間服務商廣告:100MB空間只要60RMB/年,支持數據庫,支持什麼什麼……一問不支持FSO,立馬洩氣。該組件可以檢測並顯示出系統驅動器的信息分配情況;還能夠創建、改變、移動和刪除文件夾,並能探測一些給定的文件夾是否存在,若存在,還能提取出該文件夾的信息,如名稱、被創建或最後一次修改的日期,等等。FSO還使得對文件的處理變得很容易。
正如其他組件的建立一樣,FSO的引用也必須建立連接。通過語句:
Set fso=CreateObject("Scripting.FileSystemObject"),使FSO組件可以被fso變量調用,即可以通過變量fso來處理驅動器上的文件或是文件夾了。
制作便於操作的按鈕
為了操作方便我們可把上面我們編寫的過程放到一個按鈕上。首先,我們在Excel中選擇“視圖→工具欄→窗體”菜單,在“窗體”工具欄上點擊“按鈕”,按住鼠標左鍵根據需要拖出一個按鈕。在彈出的“指定宏”的窗口中,我們選擇過程ml,確定後退出。最後,在按鈕的標簽處單擊,修改按鈕的標簽,如更改為“生成目錄”。
最後,點擊“生成目錄”按鈕,就會發現工作簿中添加了以影視作品分類文件夾命名的工作表,並且每個工作表中都生成了相應的目錄(圖3)。
小提示:激活VBA代碼
要想使這些事件即VBA代碼起作用,我們需要調整宏的安全性。選擇“工具→宏→安全性”,把宏的安全性設置為“低”。
本文來自於【系統之家】 www.xp85.com