[ VBA ] 読取専用ファイル・フォルダの削除 ( Scripting.FileSystemObject )

Pocket

ここでは、VBA でファイルおよびフォルダの削除を行うサンプルスクリプトを掲載しています。

スポンサーリンク


ファイル・フォルダの削除

まずは、ファイル・フォルダの削除を Kill 関数RmDir 関数を使って削除するサンプルスクリプトです。

    Dim folderPath As String, fileName As String
    
    'フォルダのパスを設定
    folderPath = "e:\delete_test"
    
    'フォルダ内のすべてのファイル指定(ワイルドカード指定)
    fileName = folderPath & "\*.*"
    
    'ファイルの削除
    Kill fileName
    
    'フォルダの削除
    RmDir folderPath

ポイント

  • 削除対象のファイルが1つも存在しないはエラーとなる
  • ファイル・フォルダが読み取り専用の場合、「実行時エラー75 : パス名が無効です」とエラー出力され、中途半端にファイルが削除された状態となる
  • フォルダ内にファイルがある場合は、全てのファイルを削除してからフォルダを削除する必要がある

Scripting.FileSystemObject の DeleteFolder, DeleteFile メソッド

次に読み取り専用ファイル・フォルダの削除も行うサンプルスクリプトになります。詳細はサンプル内のコメントを参照ください。

    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
     
    ' 読み取り専用でもファイルを削除する。(第2パラメータ true)
    Call fso.DeleteFile("e:\delete_test\*.csv", true)

    ' 読み取り専用でもフォルダを削除する。(第2パラメータ true)
    Call fso.DeleteFolder("e:\delete_test", true)
    
    Set fso = Nothing

ここで示した Scripting.FileSystemObject を使用したサンプルスクリプトは、Kill および RmDir 関数を使用した場合と比較すると、

  • 読み取り専用ファイル・フォルダでも削除可能
  • フォルダ内にファイルが存在していてもフォルダを削除できる

と言った点が異なる動作となります。

なお、パラメータ次第で読み取り専用ファイルやフォルダを削除しないようにすることもできます。(DeleteXXXX 関数の第2パラメータに false :デフォルト を設定する)

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>