. VBA100本ノック 21本目:バックアップファイルの削除|VBA練習問題
VBA100本ノック 21本目:バックアップファイルの削除|VBA練習問題
VBA100本ノック 21本目:バックアップファイルの削除|VBA練習問題

VBA練習問題VBA100本ノック 21本目:バックアップファイルの削除

Dim sPath As String Dim sFile As String Dim sExt As String sPath = wb.Path & "\BACKUP" If Dir(sPath, vbDirectory) = "" Then Exit Sub sExt = Mid(wb.Name, InStrRev(wb.Name, ".") + 1) sFile = Left(wb.Name, InStrRev(wb.Name, ".") - 1)

Killは読み取り専用は削除できないのでエラー対応を入れました。 FSOは読み取り専用も削除できますが、それでも削除できない場合もあります。 (ファイルを開いている等) DirをFSOに書き換えたコードは記事補足に掲載しました。 ※掲載VBAは少々テスト不足かもしれません。

補足

VBAは少々ごちゃごちゃしていますが、多くは文字列操作しているだけで、 基本は、 tFile = Dir(パス) Do Until tFile = "" ・・・ tFile = Dir() Loop この構造だけしっかり把握していれば問題ないでしょう。

Dir関数+KillステートメントをFileSystemObjectに書き換えたものが以下になります。 Do. LoopがFor Each. Nextになっているだけで、基本構造は同じですね。 ※「Microsoft Scripting Runtime」を参照設定しています。

Dim sPath As String Dim sFile As String Dim sExt As String Dim fso As Scripting.FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") sPath = wb.Path & "\BACKUP" If Not fso.FolderExists(sPath) Then Exit Sub sExt = fso.GetExtensionName(wb.Name) sFile = fso.GetBaseName(wb.Name)

文字列処理部分は、正規表現で処理する方法も考えられそうですが、 今回はかえってコードが長くなりそうなのでサンプルは書きませんでした。 サイト内関連ページ 第79回.ファイル操作Ⅰ(Dir)|VBA入門 ・Dir関数 ・Dir関数の使用例 ・Dir関数の実践例 ・Dir関数の制限について ・Dir関数の関連記事 第80回.ファイル操作Ⅰ(その他)|VBA入門 ・ファイル操作で使う、ステートメントと関数 ・ファイル操作の使用例 ・ファイル操作の実践例 ・ファイル操作について 第119回.ファイルシステムオブジェクト(FileSystemObject)|VBA入門

・FileSystemObjectオブジェクトの使用方法 ・FileSystemObjectオブジェクトのプロパティとメソッド ・FileSystemObjectオブジェクトのメソッドの戻り値 ・FileSystemObjectオブジェクトの使用例 ・FileSystemObjectオブジェクトの関連記事と実践例

DIR関数で全サブフォルダの全ファイルを取得|VBAサンプル ・Dir関数でサブフォルダも含むファイル一覧を取得するVBA ・ファイル一覧を取得するVBAの使用例と解説 ・Dir関数の関連記事 Dir関数の制限について|VBA技術解説 ・3桁拡張子の指定時の問題 ・256バイトを超えるパス名が扱えない ・UNICODEファイル名が扱えない ・特殊なネットワークドライブでエラー ・Dir関数の制限の最後に VBAで正規表現を利用する(RegExp)|VBA技術解説

・VBScript 廃止に向けて、VBA プロジェクトを対応させる方法 ・メタ文字 ・正規表現 ・正規表現RegExpの使い方 ・RegExpオブジェクト ・RegExpの使用例 ・RegExp関連のオブジェクト ・Execute(Matches,Match,SubMatches)の使用例 ・Replaceの使用例 ・先読み:肯定先読み、否定先読み ・正規表現の実践例

同じテーマ「VBA100本ノック」の記事 新着記事 NEW ・・・新着記事一覧を見る アクセスランキング ・・・ ランキング一覧を見る このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。 掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。 本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。 This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.

📎📎📎📎📎📎📎📎📎📎