ピンポイントでファイルを完全に削除するマクロ(コピペ可)

vbabookkilleyecatch

エクセルVBAマクロで、ファイルの削除方法についてです。今回はKillステートメントを使用します。
ファイルをピンポイントで完全削除するマクロを紹介します。コピペOKです。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、ファイルを削除するためのVBAコードについてです。

ファイルの削除のためには「Killステートメント」または「DeleteFile」を利用します。ここでは、コードの可読性の良いKillステートメントを使用することにします。

現在のPCはどれも、ストレージ容量が大きく、その分、不要になったファイルをすぐに廃棄しなくても、保存可能容量的には圧迫されることは無いでしょう。以前はファイル整理(削除)作業でフォルダ単位で ” バッサリ ”をというのがよくありました。

今は、ファイル削除と言えば、ファイル単位で必要限度の削除処理というイメージです。

なので、この記事では削除手法的に、

「その都度、目標のファイルを指定して、そのファイルを削除処理する」

というスタイルのマクロ(VBAコード)の記述方法を紹介したいと思います。

ファイルの削除を行うKillステートメント

vbabookkillp010

Killステートメントは、記述構文としてはこのようになります。

Killステートメントの構文

Kill ファイルパス

ファイルパスの記述方法については別記事も参考にしてください。

VBA
Sub Killステートメント例示()
        Kill "C:\Users\〇〇〇\Documents\削除対象ファイル\Book3.xlsx"
End Sub

このサンプルコードを実行すると、削除対象フォルダ内のBook3.xlsxが削除されます。

vbabookkillp001
削除コード実行前
矢印下001
vbabookkillp002
削除コード実行後

基本的にKillステートメントの使い方はこのようにして実行できます。

ただし、これは ” 基本的に ” であって、実務的にはこれだけでは利用価値がありません。最低限の問題を処理しておく必要があります。

  • マクロに直接に「削除ファイルのパス」を書くくらいなら、マウスで手動削除した方が速い。「削除ファイルのパス」はその都度変えれるようにしたい。
  • 実務での、ファイルを開いて内容を確認して「不要なら削除」の作業手順の中で削除をしたい。ファイルが開いた状態ではこの「基本的なKillコード」は実行できない。
  • 「やっぱり削除を止めます」を出来るようにしたい。

指定したファイルを完全に削除する

vbabookkillp011

例示として、マクロ実行ブックと同じフォルダにある「Book2.xlsx」をピンポイント削除します。

処理前のフォルダ

vbabookkillp002
削除処理前のフォルダ
矢印下001

処理後のフォルダ

vbabookkillp009
削除処理後のフォルダ
指定したファイルを完全に削除するVBAコード

削除コード全体は以下のようになります。

VBA
Sub ファイルの削除1()
    Dim BkName As Variant
    Dim wb As Workbook
    Dim Ans As Integer
'■-----------ファイル名取得部分
        ChDir ThisWorkbook.Path
        BkName = Application.GetOpenFilename(filefilter:= _
            "Excelファイル,*.xls*", Title:="ファイル選択")
'--●---------ファイル名を取得できたとき
        If BkName <> False Then
'--●-▲------指定したファイルが現在開かれた状態かどうか
            For Each wb In Workbooks
                If wb.Name = Dir(BkName) Then
                    MsgBox wb.Name & "が選択されました。" & vbCrLf & _
                    "" & vbCrLf & "このファイルは開かれています。" _
                    & vbCrLf & "" & vbCrLf & "いったん終了させます。", _
                    vbInformation
                    wb.Close False
                    Exit For
                End If
            Next
'--●-▲------指定したファイルが現在開かれた状態かどうかここまで
            Ans = MsgBox(BkName & vbCrLf & "" & vbCrLf & _
                "を本当に削除しますか?", vbYesNo + vbExclamation, _
                "ファイル削除確認")
'--●---------ファイル名を取得できなかったとき
        Else
            MsgBox "キャンセルされました"
            Exit Sub
        End If
'■-----------ファイル名を取得できたかどうか条件分岐ここまで
'◆-----------削除実行
        If Ans = 6 Then
            Kill BkName
            MsgBox "ファイルが完全に削除されました。", vbInformation
        Else
            MsgBox "ファイルの削除を中止しました。", vbInformation
            Exit Sub
        End If
'◆-----------削除実行ここまで
End Sub

ファイル名取得部分

ファイルをピンポイントに指定する方法はダイアログを利用します。

このファイル名取得部分のVBAコードを実行すると、ファイル選択のダイアログが表示されます。

最初に表示されるフォルダは「ChDir ・・・」によって変更出来ます。

vbabookkillp003

キャンセルボタンをクリックすると「キャンセルメッセージ」が表示されます。

vbabookkillp004

ファイルを取得の状態

ファイル名を取得した場合

完全に削除するかどうかの最終確認メッセージが表示されます。

ダイアログでファイルを選択し、開くボタンをクリックすると、削除するかどうか最終確認されます。

vbabookkillp006

取得したファイルが現在開かれている場合

ファイルが現在開かれている時は、「開かれているメッセージ」が表示されて、そのファイルが閉じられます。

ダイアログでファイル選択、開くクリックで、そのファイルが現在開かれていた場合は、そのファイルを閉じて良いかを確認してきます。「OK」をクリックすると「保存しないで終了(削除が前提なので)」されます。

vbabookkillp005

次に、完全に削除するかどうかの最終確認メッセージが表示されます。

vbabookkillp006

ファイル名を取得できなかった場合

ファイル名が取得できなかった場合は、「ファイル削除中止」のメッセージが表示されます。

初めの時点でダイアログでファイル選択せずに「キャンセル」した場合や、ファイル削除確認で「いいえ」をクリックした場合は、削除を中止します。

vbabookkillp007a

指定のファイルを削除

指令したファイルを削除した場合は、「削除完了」メッセージが表示されます。

正常に削除が実行されれば、削除完了のメッセージが表示されます。

vbabookkillp008

まとめ

vbabookkillp012

ファイルをピンポイントで指定削除処理するマクロ(VBAコード)を紹介しました。

特に、必要か不要かをファイルを開き確認してのファイル削除作業は、” 開いて閉じて削除して ” と作業が結構面倒です。

このマクロなら、横でマクロ実行ブックを起動しておき、削除ファイルを開いたままの状態で自動削除することが出来ます。

このマクロに使っているVBAコードも「絶対パスではなく相対パス」を使用していますので、導入したいエクセルブックにコピペで実行させることが出来ます。

導入先ブックの注意点

個人用マクロブックに導入した場合は、相対パス指定の「ThisWorkbook」の指しているものが個人用マクロブックになります。なので、ダイアログが最初に表示するフォルダが、とんでもない先に行ってしまいます。

C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\Excel\XLSTART

ChDirでドキュメントなど使い易い先に変更してください。

マクロのコピペの方法についてはこちらの Webで見つけたマクロをコピペで使う を参考にしてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min