介紹如何使用 Excel VBA 的 Kill 函數刪除檔案。
Kill
函數用法
在 Excel VBA 巨集程式中,若想要刪除指定的檔案,可以使用 Kill
這個函數,其用法如下:
Kill(檔案路徑)
以下是一個實際的刪除檔案範例:
' 檔案路徑 filePath = "C:officeguidemyfile.txt" ' 刪除檔案 Kill(filePath)
亦可使用萬用字元(*
)來指定要刪除的檔案,例如若要刪除 C:officeguide
目錄下所有的純文字檔案(*.txt
)就可以這樣寫:
' 以萬用字元指定刪除的檔案 Kill("C:officeguide*.txt")
唯讀檔與檔案不存在問題
Kill
函數若遇到唯讀檔案,或是指定要刪除的檔案不存在的狀況,回直接產生錯誤,終止程式的執行:
如果想要避免這種小問題,可以在呼叫 Kill
函數之前,先確認檔案是否存在,並且設定檔案的屬性(將唯讀屬性取消),這樣就可以確保不會因為刪除檔案失敗而造成程式出錯。
' 檔案路徑 filePath = "C:officeguidemyfile.txt" If Len(Dir(filePath)) > 0 Then ' 確認檔案存在 SetAttr filePath, vbNormal ' 排除唯讀檔問題 Kill filePath End If
正規表示法
如果要刪除的檔案名稱比較複雜,也可以使用正規表示法來指定刪除的檔案,首先自己建立一個 RegexKill
函數,內容如下:
' 以正規表示法指定刪除的檔案 Sub RegexKill(filePath As String, pattern As String) Dim regex As Object, fileName As String, deleted As Long Set regex = CreateObject("VBScript.RegExp") regex.pattern = pattern fileName = Dir(filePath) Do While fileName <> vbNullString If regex.Test(fileName) Then Kill (filePath & fileName) fileName = Dir Loop End Sub
接著我們就可以使用 RegexKill
函數,指定目錄位置以及正規表示法的規則,來精確指定要刪除的檔案:
' 以正規表示法指定刪除檔案 RegexKill "C:officeguide", "^[0-9]+.txt$"
以這個例子來說,^[0-9]+.txt$
代表檔案名稱完全都是以數字組成的文字檔,所以執行之後,只要檔名是由純數字組成的檔案都會被刪除(前三個檔案),而如果檔名有參雜英文字母或其他字元的檔案則會被保留。
程式執行之後,C:officeguide
目錄下前三個由數字組成的檔案就會被刪除,只留下 A032.txt
與 office.txt
兩個檔案。
參考資料:AnalystCave、AnalystCave