EXCEL 內建相當多檔案物件與函數可以使用,函數部分最常用的是DIR這個函數,在DOS的年代這個指令是用來列印出目前該目錄內的檔案清單,其實DOS'S DIR與EXCEL的DIR很像!!
不過EXCEL是取得檔案名稱。基本操作參考MSDN:DIR
回歸主題,先把標題變成問題:
如果我們要搜尋關鍵字找檔案名稱應該怎做?
再延伸:如果我們要搜尋關鍵字找檔案名稱應該怎做,又可以防呆?
再延伸一次:如果我們要搜尋多關鍵字找檔案名稱應該怎做,然後又可以防呆?
(把問題想三次,比較好聚焦)
如果我們要搜尋關鍵字找檔案名稱應該怎做?
例如要搜尋2330台積電的EXCEL檔案。
語法:DIR("路徑\2330.xlsm")
Private Sub CommandButton1_Click()
a = Dir("X:\股票\2330.xlsm")
End Sub
解說:如果有找到則A變數會儲存2330.xlsm的字串資料。
續:
如果我們要搜尋關鍵字找檔案名稱應該怎做,又可以防呆?
試想防呆這情況,為何需要防呆??若以上敘語法有需要其實是不需要的歐,
因為都指定檔案名稱跟副檔名了;反之當僅知道關鍵字時,
例如僅知道2330,則我們需要多一道手續來防呆避免抓錯檔案。
使用INSTR來檢查有無含有指定關鍵字。
類似這樣子:
IF INSTR(FILENAME,"2330")>0 THEN
END IF
所以合併一下:
Private Sub CommandButton1_Click()
a = Dir("X:\股票\2330*.*")
IF INSTR(A,"2330")>0 THEN
MSGBOX "找到了 " & A
END IF
End Sub
可以加上迴圈作多檔案名稱檢查:
Private Sub CommandButton1_Click()
a = Dir("X:\股票\*2330*.*")
Do while a<>""
IF INSTR(A,"2330")>0 THEN
MSGBOX "找到了 " & A
END IF
a = Dir("X:\股票\2330*.*")
loop
End Sub
再延伸一次:如果我們要搜尋多關鍵字找檔案名稱應該怎做,然後又可以防呆?
發想:
結合兩個迴圈做不同關鍵字檢查,檢查無誤則把正確檔案明確留下。
Private Sub CommandButton1_Click()
I=1
a = Dir("X:\股票\*" & ACTIVESHEET.RANGE("A" & I ).VALUE & "*.*")
Do while a<>""
ACTIVESHEET.RANGE("B" & I )=A '先列出檔名
J=1
Do while ACTIVESHEET.RANGE("B" & J) <>""
IF INSTR(ACTIVESHEET.RANGE("B" & I).VALUE,
ACTIVESHEET.RANGE("A" & I ).VALUE)=0 THENACTIVESHEET.RANGE("B" & I ).VALUE=""
END IF
J=J+1
loop
I=I+1
a = Dir("X:\股票\*" & ACTIVESHEET.RANGE("A" & I ).VALUE & "*.*")
loop
End Sub
沒有留言:
張貼留言