- ベストアンサー
ExcelVBAで特定ファイル名以外削除したい
特定ファイルの特定ファイル名以外のCSVを削除したいのですが うまく行きません。 filePath = "\\〇〇金属csvダウンロードファイル\Pt・Pd・Rh" & "" Kill filePath & "DAILY_AverageAcrossAllTimeZone" & "*.csv" 元のファイル名 DAILY_AverageAcrossAllTimeZone_5_20_2022.csv 今日の日付 → 「_5_23_2022」以外は削除したい 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一般的には、全部のファイルをループして、対象のファイル以外を処理とか。 ' 対象のファイル名を生成 target = "DAILY_AverageAcrossAllTimeZone"&今日の日付&".csv" ' 対象のフォルダのファイルの一覧(の最初のファイル)を取得 fn = Dir(filePath &"\*.*") Do While fn<>"" '対象のファイルがある間ループ if fn <> target then ' 対象以外のファイルを削除 Kill filetaph & "\" & fn Endif ' 次のファイルを取得 fn = Dir() Loop
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者の職場の特殊な課題の場合のことなので、質問者がやること。他人では、テストデータが作るのがむつかしい。丸投げは好ましくない。 よくある課題であり、そっくりな課題に対応した、関連WEB記事も多い。其れさえも調べてないのでは。 ーー Dirを使う方法よりも、> 「ツール」→「参照設定」に、「Microsoft Scripting Runtime」にチェックを付ける> で行う、FSOを使う方法を勧める。 今後の応用が広いと思う。 https://excel-ubara.com/excelvba1/EXCELVBA419.html 第119回.ファイルシステムオブジェクト(FileSystemObject) ここのVBAのコードで、 strDir = "C:\Users\XXX\documents" 小生が行った場合例 を質問者の場合に置き換えること。本件対象のファイルの直上(所属)のフォルダ名に修正すること。 新規ブック(新規シート)で 開発ーVisualBasicー挿入ー標準モジュールーに上記WEBのコードをコピペして、修正したものを実行する。 Sheet1のA,B,C列に、存在するファイル名などがすべて、1つ1行で出てくるはず。 次に 上記コードの >'ファイル一覧 For Each objFile In objFolder.Files With objFile Cells(i, 2) = .Name の辺で、せるに書き出す直前で、IF文を入れて、該当のファイル(名)だけに絞る。 (1)拡張子が「csv」 (2)ファイル名(objFile.Nameについて)文字列の前半部分(midに関数で取り出す)について、該当のもの以外を削除、 のIF文を入れる。 (3)実行してシートに出てきた、ファイル名一覧がOKのようなら、 (4)さらに、IF文を入れて、ファイル名の後半部分について、前半は指定文字列一致でなお、後半「5_23_2022」以外は、ファイル削除する。 上記WEB記事の中の、DeleteFile 指定されたファイルを削除します。 object.DeleteFile ( filespec[, force] ) のDeleteFile を行う。
お礼
有難う御座います。 勉強になりました。
お礼
有難う御座います。 うまく行きました。