← コード一覧へ戻る
実務ファイル

隠し属性ファイルを削除する

隠し属性の付いたファイル1つを、確認後に完全削除します。ごみ箱には入りません。

実行前に確認

  • Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
  • DeleteFileによる削除はごみ箱へ入りません。システムファイルや他人のファイルで試さないでください。*や?は使用しません。
  • 元のコードのSetAttr vbNormalによる保護属性の一括解除は行いません。読み取り専用・システム属性なら中止します。

1サンプルコード

Sub Example4033()
    On Error GoTo Failed
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim filePath As String
    filePath = "C:\Data\sample.txt"
    If Not fso.FileExists(filePath) Then
        MsgBox "ファイルがありません: " & filePath
        Exit Sub
    End If
    Dim attributes As Long
    attributes = GetAttr(filePath)
    If (attributes And vbHidden) = 0 Then
        MsgBox "隠し属性ではないため中止します"
        Exit Sub
    End If
    If (attributes And (vbReadOnly Or vbSystem)) <> 0 Then
        MsgBox "読み取り専用・システム属性のファイルは削除しません"
        Exit Sub
    End If
    If MsgBox(filePath & vbCrLf & "この1ファイルを完全に削除します。続けますか?", _
        vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
    fso.DeleteFile filePath, False
    MsgBox "削除しました"
    Exit Sub
Failed:
    MsgBox "処理を中止しました: " & Err.Description
End Sub

図で見るファイルの変化

イメージ図

コードに沿った概念図です。実際の画面や実行結果ではありません。

  1. 削除前

    C:\Data\sample.txt:隠し属性あり 読み取り専用・システム属性なし 先に別途バックアップ

  2. マクロ:条件を確認

    実在する1ファイルか、隠し属性か、禁止属性がないか調べる

  3. 手動:最終確認

    絶対パスが練習用ファイルであることを確認し「はい」

  4. 削除成功後

    C:\Data\sample.txt:なくなる ごみ箱には入らない

「いいえ」、対象なし、隠し属性なし、読み取り専用・システム属性ありなら中止。完全削除です。保護属性を解除せず、*や?も使いません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    自分で作った不要なテストファイルをバックアップし、エクスプローラーのプロパティで隠し属性を付けます。

  3. 3

    filePathをそのテストファイルの絶対パスへ変更します。

  4. 4

    実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面の絶対パスがそのテストファイルを指す場合だけ[はい]を押します。

  5. 5

    [はい]なら対象ファイルが完全に削除され、ごみ箱には入りません。隠し属性がない場合や、読み取り専用・システム属性がある場合は中止します。

使っている機能の公式ドキュメント(Microsoft Learn)