エクセルVBAで、不要な使わないフォルダを削除するコードの作成方法についての説明です。
VBAの機能とファイルシステムオブジェクトの機能を使う方法の2種類があります。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は、不要なフォルダをサクッと削除するエクセルVBAコードを紹介します。
削除の仕方は2つあります。VBA自身の機能を使うことと、FSOの機能を使うことの2つです。
- ブックの知識
- ブックの操作
- ワークブックを開くOpenメソッドの書き方 Excelマクロ
- VBA ブック名の取得法4つの解決策を詳しく解説
- VBA 開く,保存,閉じる,作成,削除 ブックの存在確認後のコード記述
- ファイルの保存に年月日+時刻を付けて管理する
- VBA 保存先フォルダをダイアログ指定で変数化
- 新規ブック5つの保存法。AddとSaveAsの使い方がわかる
- セル値を使いブック名として保存。統一フォームに有用
- VBA シートをブックから切り出し名付け保存する
- ブック名に作成者名を付加。 プロパティ変更とファイル保存
- 不要フォルダを削除する2種類のコードの作成
- 要らないファイルを自動削除するコードの作成
- ワークブックを閉じる12のパターン使い分け VBA最速理解
- ピンポイントでファイルを完全に削除するマクロ(コピペ可)
コンテンツ
不要なフォルダを削除する2種類のコードの作成
先回は、ファイルの自動削除コードについて説明させていただきましたが、今回は、それが入っていたフォルダを削除するコードについて説明したいと思います。
今回の例題
ファイルの削除で使った例題を利用します。
要らないファイルを自動削除するコードの作成一連のつながりとしてご覧ください。ただし、今回はVBAコードを記述したエクセルBOOKは対象フォルダから外に出しています。
エクセルVBA自身の機能を使う
RmDirステートメントについて
フォルダを削除します。削除の指定をされたフォルダ内にファイルが残っているとエラーストップします。
先ず、Killステートメントですべてのファイルを削除しておく必要があります。
記述方法
RmDir folderpath
folderpath・・・削除するフォルダパス
Dir関数、KillとRmDirステートメントを使ったコード作成
ここは先回の記事内容の復習になります。
Option Explicit
Dim delpath As String
Sub DirKillサンプル5()
'削除するファイルのパス
delpath = ThisWorkbook.Path & "\サンプル"
'削除したいファイルが存在するか
If Dir(delpath & "\*.*") <> "" Then
'ファイルを削除する
Kill delpath & "\*.*"
Else
'見つからない場合のメッセージ
MsgBox "削除予定ファイルは見つかりませんでした。"
End If
Call folder1削除
End Sub
実行結果
Killステートメントで、フォルダ内のファイルが削除されました
RmDirステートメントで、対象フォルダが削除されました。
「VBA自身の機能でコード1」でフォルダの中のファイルを削除しましたが、
その中でプロシージャー「folder1削除」を呼び出しています。
Sub folder1削除()
'削除したいフォルダが存在するか
If Dir(delpath, vbDirectory) <> "" Then
'フォルダを削除する
RmDir delpath
Else
MsgBox "削除予定フォルダは見つかりませんでした。"
End If
End Sub
ファイルシステムオブジェクトFSOを使う
「ファイルシステムオブジェクト」はコンピューターのファイル システムへのアクセスを可能にするオブジェクトです。
エクセルVBA上でも使えるようになっています。
最初に、VBAの参照設定でちょっとしたセットアップをしておきます。
VBEの画面でツールタブから参照設定をクリックします。
「参照可能なライブラリファイル」から「Microsoft Scripting Runtime」にチェックを入れてOKします。
今回使うメソッドは、
FileSystemObjectオブジェクトのDeleteFolderメソッドとFolderExistsメソッドになります。
記述方法と意味
FileSystemObject. DeleteFolder ( folderpath)
指定したフォルダを(内部にあるファイルもろ共)削除します。
FileSystemObject. FolderExists ( folderpath)
指定したフォルダが存在するかどうかを調べます
たったこれだけのコードです。
Sub folder削除2()
Dim myFSO As New FileSystemObject
Dim myFld As String
myFld = ThisWorkbook.Path & "\サンプル"
'フォルダが存在するかどうかを調べる
If myFSO.FolderExists(myFld) Then
'指定したフォルダを削除する
myFSO.DeleteFolder (myFld)
Else
MsgBox "削除予定フォルダは見つかりませんでした。"
End If
End Sub
実行結果
不要なフォルダを削除するコードのまとめ
例題を比較していただいても明らかですが、ファイルシステムオブジェクトを利用する方が短いコードで作成することが出来ました。
ただ、ファイルシステムオブジェクトは奥が深いですので、
VBAをやり始めてこれからの方は、この項目の探求については深入りはせずに、後に回した方がいいかもしれません。
まずはVBA自身の機能の練習から行っていきましょう。
今回のテーマのような簡単なものだけに取り敢えずはとどめておきましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。