Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (12) ファイルを削除する

 
(12) ファイルを削除する

 VBAからファイルを削除する方法を紹介します。

 下記サンプルコードは、フォルダ「C:\Sample」配下に存在している「article.csv」を削除する処理です。

 1行目:  Public Sub Sample_Killfile_01()
 2行目:  
 3行目:      Kill "C:\Sample\article.csv"
 4行目:  
 5行目:  End Sub
このサンプルコードを実行すると、フォルダ「C:\Sample」配下にファイル「article.csv」が存在している場合には、そのファイルが削除されます。
<実行前>

<実行後>

ファイルが存在していない状態で、Killステートメントを実行するとエラーが発生します。
 Killステートメントでは、複数のファイルを指定する為に、"*"、"?"のワイルドカード文字を指定できます。以下のコードを実行すれば、「C:\Sample」配下のExcelファイルを全て削除します。ワイルドカード文字を使用した場合も、対象のファイルが一つも存在しなければエラーが発生するので注意して下さい。

 1行目:  Public Sub Sample_Killfile_01()
 2行目:  
 3行目:      Kill "C:\Sample\*.xls"
 4行目:  
 5行目:  End Sub
 また、Kill以外にも、FileSystemObjectのDeleteFileメソッドを使ってファイルを削除することができます。

 1行目:  Public Sub make_folder_02()
 2行目:     
 3行目:      Dim FSO As Object
 4行目:
 5行目:      Set FSO = CreateObject("Scripting.FileSystemObject")
 6行目:     
 7行目:      ' ファイルを削除する。
 8行目:      Call FSO.DeleteFile("C:\Sample\article.csv")
 9行目:     
10行目:      Set FSO = Nothing
11行目:     
12行目:  End Sub
 単純なファイルの削除であれば、プログラムコードが少ない分、Killの方が使い勝手が良いでしょう。しかし、FileSystemObjectのDeleteFileメソッドは読み取り専用のファイルを強制的に削除するオプションがあります。第二引数にTrueを指定すると、削除対象のファイルが読み取り専用であっても、強制的に削除できます(※第二引数省略時はFalseを指定した動作と同じになります。)。

…
    ' ファイルが読み取り専用であっても削除する。
    Call FSO.DeleteFile("C:\Sample\article.csv", True)
…
ページの先頭へ