• ベストアンサー

ExcelVBAで特定ファイル名以外削除したい

特定ファイルの特定ファイル名以外のCSVを削除したいのですが うまく行きません。 filePath = "\\〇〇金属csvダウンロードファイル\Pt・Pd・Rh" & "" Kill filePath & "DAILY_AverageAcrossAllTimeZone" & "*.csv" 元のファイル名 DAILY_AverageAcrossAllTimeZone_5_20_2022.csv 今日の日付 → 「_5_23_2022」以外は削除したい 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

一般的には、全部のファイルをループして、対象のファイル以外を処理とか。 ' 対象のファイル名を生成 target = "DAILY_AverageAcrossAllTimeZone"&今日の日付&".csv" ' 対象のフォルダのファイルの一覧(の最初のファイル)を取得 fn = Dir(filePath &"\*.*") Do While fn<>"" '対象のファイルがある間ループ  if fn <> target then   ' 対象以外のファイルを削除   Kill filetaph & "\" & fn  Endif  ' 次のファイルを取得  fn = Dir() Loop

KHre21
質問者

お礼

有難う御座います。 うまく行きました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問者の職場の特殊な課題の場合のことなので、質問者がやること。他人では、テストデータが作るのがむつかしい。丸投げは好ましくない。 よくある課題であり、そっくりな課題に対応した、関連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 を行う。

KHre21
質問者

お礼

有難う御座います。 勉強になりました。

関連するQ&A

専門家に質問してみよう