• ベストアンサー

ある条件のもとでのファイル削除

お世話になります。 あるフォルダにデータがたくさん入っています。(画像データが主) またそのフォルダの中で必要なデータのファイル名を入力したエクセルファイルがあります。 対象のフォルダから、エクセルに入力されたファイル名と同名のファイルのみ残して他のファイルは削除したい。(もしくは必要なファイルのみ別のフォルダに移すというのでも可) 例) 対象のフォルダに 0001.tif,0002.tif,0003.tif,0004.tif,0005.tif があり エクセルのデータに 0002.tif,0005.tif が入力されているとすると 0001.tif,0003.tif,0004.tif をフォルダから削除する。 ちなみにエクセルに入力されているファイル名のデータは同じ列に1行ずつ入力されている。(A1に0002.tif,A2に0005.tif という具合です) もちろん実際のファイル数はかなりあるので手動でというのは無し。 以上のような処理を簡単に出来る方法をアドバイスください。 便利なフリーソフト、コマンドプロンプトの使用、何かエクセルの機能を使うなどアプローチはどんな方法でも構いません。 OSはWinXP proです。 よろしくおねがします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.7

他のファイルはそのままでよいのですね。 No.2の回答と同じやり方で以下のマクロをコピーして貼りつけ、実行してください。 なお、2行目の「必要なファイル」というところは作成するフォルダ名です。実際には違う名前の場合は書き換えてください。 3行目の"A"というのは、ファイル名が入力されている列名です。A列以外の場合はその列名に書き換えてください。 Sub ファイル移動()  Const DirName As String = "必要なファイル"  Const FileCol As String = "A"  Dim F As String  Dim R As Range  F = ThisWorkbook.Path & "\"  If Dir(F & DirName, vbDirectory) = "" Then MkDir F & DirName  For Each R In Range(Cells(1, FileCol), Cells(Rows.Count, FileCol).End(xlUp))   If R.Value <> "" And Dir(F & R.Value) <> "" Then    Name F & R.Value As F & DirName & "\" & R.Value   End If  Next End Sub

HGK
質問者

お礼

ありがとうございました。 期待通りの動きをしてくれました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.8

★回答者 No.3 です。 ・過去の回答履歴より、似たような事が出来る VBScript を見つけたので参考にして下さい。 ・http://oshiete1.goo.ne.jp/qa2757928.html→『ファルダ内に散在してるファイルを検索し一箇所にコピーしたい』 ・上記で紹介しているスクリプトを改変などすれば Excel のデータファイル(csv)からフォルダ名を  取り出して自動化できます。 ・以上。おわり。→参考になればと思い再回答!

HGK
質問者

お礼

ありがとうございました。 参考にします。

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.6

うまく動いたようでよかったです。 > たとえばエクセルに入力されたファイルだけ、 > フォルダ内に「必要なファイル」とかいう名前の > フォルダを新規に作り、そのフォルダに移すと > いうことは出来ますか? フォルダを作ってファイルを移すのはできるのですが、 ・エクセルに入力されたファイルを移して、それ以外のファイルは削除する のか、それとも ・エクセルに入力されたファイルを移して、それ以外のファイルはそのままにするのか、 どちらなのか、補足していただけますでしょうか。

HGK
質問者

補足

返信ありがとうございます。 「その以外のファイルはそのままにする」でおねがいします。

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

No.2 & 4です。 「反応しなくなった」というのは、私は「Excelがフリーズした」と思ったのですが、そうではなくて、マクロを実行してもうんともすんとも言わず、ファイルの削除も行われなくなった、ということでしょうか。 もしそうであれば、マクロを以下と置きかえていただけますでしょうか。これでうまく動くといいのですが…。 Sub ファイル削除()  Dim FileName As String  FileName = Dir(ThisWorkbook.Path & "\*.*")  Do While FileName <> ""   If Columns("A:A").Find(FileName) Is Nothing And FileName <> ThisWorkbook.Name Then    Kill ThisWorkbook.Path & "\" & FileName   End If   FileName = Dir()  Loop End Sub

HGK
質問者

補足

ご回答ありがとうございます。 試した結果、問題なく動いてくれました。 わがままついでなんですが、たとえばエクセルに入力されたファイルだけ、フォルダ内に「必要なファイル」とかいう名前のフォルダを新規に作り、そのフォルダに移すということは出来ますか?

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.2です。 > 上の例のほかいろいろ試して成功していました。 > しかし突然反応しなくなりました。 > なにか考えられることはありますか? 「突然反応しなくなった」のは何でしょうか。エクセルですか? エクセルファイルを開いても反応しなくなったのか、マクロを実行したら反応しなくなったのか、どれでしょうか。 その前の「いろいろ試して」というのがひっかかりますが、何か変えたりしましたか?

HGK
質問者

補足

回答ありがとうございます。 どのタイミングで反応しなくなったかははっきりと不明ですが、いろいろ試してみたあとエクセルを上書き保存後、閉じました。再度開いてからは反応しません。 試しに違うエクセルを作ってマクロを貼り付けて、マクロを実行しましたが動きません。 会社のパソコンでも試しましたが、同様に最初は動きましたが、エクセルを閉じたあとは反応しませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★『csvファイル』から移動バッチファイルを作成する方法はどうでしょうか。 ・回答者 No.1 さんが削除一覧を作成する方法ですが、私は必要なファイルを  別フォルダへ移動する方法を紹介します。→移動後に残ったファイルは  フォルダごとごみ箱へ捨てて下さい。 作成方法: ・『csvファイル』をメモ帳などで開きます。 ・全ての行の先頭と末尾を次のように編集します。  行の先頭に『MOVE 』の5文字を挿入します。  行の末尾に『 ..\MoveFolder』の14文字を追加します。 ・編集テキストの先頭行に『MD ..\MoveFolder』の16文字を行挿入します。 ・ファイル名をつけて保存を選択します。  ファイル名は自由ですが拡張子は『.bat』にして下さい。  保存するフォルダは『csvファイル』と同じフォルダに必ず保存します。 実行: ・エクスプローラから『csvファイル』と同じフォルダに保存されたバッチファイルを  ダブルクリックします。→親フォルダに『MoveFolder』というフォルダが自動作成  されて、ここに『csvファイル』の必要なファイルだけが移動します。 ・移動後は『csvファイル』があるフォルダを削除(ごみ箱へ移動)します。 ・自動作成された『MoveFolder』というフォルダ名を削除したフォルダ名にリネームして  おきます。 ・上記の1連の操作をフォルダ数繰り返します。→フォルダ数が3~5個なら頑張りましょう。  多い場合は、VBスクリプトを作成して、一気に移動と削除を行えるスクリプトを作ることになります。 最後に: ・行の先頭、末尾に文字列を挿入する編集支援ソフトは、クリップボード関連のソフトを  探せば見つかります。→これらのフリーソフトと組み合わせて『csvファイル』から移動  バッチファイルを作成します。そして、このバッチファイルを実行させることで大量の  ファイルを別フォルダへ移動します。その後、残ったフォルダを丸ごとごみ箱へ捨てます。 ・以上。おわり。→下の『参考URL』のソフトで行の先頭、末尾に文字列を挿入できます。

参考URL:
http://www2u.biglobe.ne.jp/~shunbook/omocha/clipfan.htm
HGK
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

エクセルは他のファイルと同じフォルダにあるのですよね? エクセルのマクロでやる方法です。 削除しないファイル名が書いてあるシートのシートタブを右クリックし、「コードの表示」を選択します。 マクロの画面が出るので、以下のマクロを右の白い画面にコピーして貼り付けます。 ※マクロ中の"A:A"という箇所は、もしファイル名が書かれている列がA列でない場合は、実際の列名に書き換えてください。 Sub ファイル削除()  Dim FileName As String  FileName = Dir("*.*")  Do While FileName <> ""   If Columns("A:A").Find(FileName) Is Nothing And FileName <> ThisWorkbook.Name Then    Kill FileName   End If   FileName = Dir()  Loop End Sub その画面からF5キーを押してマクロを実行すると、エクセルのシートに入力されていない同じフォルダのファイルが削除されます。 ★もし不具合があって必要なファイルまで削除してしまうと危険なので、事前にフォルダごとコピーしておいてバックアップをとっておく方がよいでしょう。

HGK
質問者

お礼

ありがとうございました。

HGK
質問者

補足

ご回答ありがとうございます。 上の例のほかいろいろ試して成功していました。 しかし突然反応しなくなりました。 なにか考えられることはありますか?

全文を見る
すると、全ての回答が全文表示されます。
noname#39970
noname#39970
回答No.1

エクセルの表にファイル一覧を取込み、削除一覧を作成する 削除一覧をcsvに保存しテキストエディタで削除コマンドに置換し、BAT拡張子に変更した後実行する

HGK
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 同名ファイルを一括削除する

     削除対象フォルダa1,a2,a3... と  参照フォルダ b1,b2,... を指定すると、削除対象フォルダ内にある、  「参照フォルダ内のファイルと同名でタイムスタンプが古いファイル」 を一括削除できるソフトを探しています。 いろいろ検索して、FileHammerが希望に近いかと思い使ってみましたが、希望した設定方法がわからず、使えませんでした。 よろしくお願いします。

  • エクセル:マクロでの同名ファイル検索

    お世話になります。 あるフォルダの中に、たくさんフォルダが入っています。 子フォルダのファイルを全て親フォルダに移すのですが、同名ファイルがある可能性があります。 同名ファイルは枝番をつけるなどして処理するのですが、あらかじめ同名ファイルがあるかどうかを調べたいのです。 親フォルダの中にエクセルを入れておき、マクロの実行の結果、エクセルのシートに同名ファイルの情報を表示できればと思っています。 例)もし同名ファイルがあった場合、 まずセルA1にファイル名、B1に拡張子を表示する。123.xlsの場合 A1に123 B1に.xls そしてそのファイルが入っているフォルダ名をB2以降のB列に表示する。 3つのフォルダにA1のファイル名のデータがあれば、B2,B3,B4にそのフォルダ名が表示される。 もちろん同名ファイルが1組とは限りません。 2つ目以降はB列のフォルダ名が入った下の行のA列(上の例だとA5)にファイル名が入る。 この繰り返しです。 また、もし1つの同名ファイルがなかった場合は、A1に「同名ファイルなし」と表示させます。 ちなみに重複の場合の枝番の付け方に規則性がないため手作業で行いますが、枝番をつけて同名ファイルを無くした あとにまとめて親フォルダに全データを移すこともマクロで可能ならアドバイスください。 フォルダ構成は1つの親フォルダに対して複数の子フォルダで、孫フォルダはありません。 OSはWinXP、Excelは2002です。 よろしくお願いします。

  • ファイルを削除できません!

    削除したいファイルが削除できません!どうしてらよいですか? 質問です。 削除したいファイル(フォルダ)があるのですが、 ○○を削除できません。ほかの人またはプログラムによって使用されています。 ファイルを使用している可能性があるプログラムをすべて閉じてから、やりなおしてください。 と出てしまい、削除できません。ファイル名の変更もできません。 もちろん、何のアプリケーションも起動していませんので 他のプログラムによって使用されてることは絶対にありません。 コマンドプロンプトより削除しようとして操作していたのですが、 例)C:\WINDOWS>DEL <削除するファイル名> と入力後、 よろしいですか?と表示され、 (Y/N)? と表示されます。この後の操作方法が分かりません。 この段階ではまだ削除できていませんよね? 色々なサイトで検索してみても、入力後エンターで削除、 と書かれているだけで皆さんすんなりと削除できているようなんですが このメッセージは私にだけ出るんでしょうか? 削除方法を教えてください!!よろしくお願いします。

  • 教えて下さい:フォルダが削除できません!!

    こんにちは。 あるフォルダを削除しようとしたところ、 「XXXX(フォルダ名)を削除できません。ファイルまたはディレクトリが壊れているため、読み取ることができません」というエラーが表示され、削除することができません。 コマンドプロンプトに「del フォルダのアドレス」を入力したりもしましたが、うまく行きません。 フォルダを削除する方法を教えていただけませんか?

  • ファイルの削除ができません。

    デスクトップにあるフォルダの削除ができません。 削除しようとすると、 「ファイルまたはフォルダの削除エラー:  ファイルを削除できません。 送り側のファイルまたはディスクから読み取れません」 というメッセージが出ます。 コマンドプロンプトでの削除の方法がある事を知り、 試してみましたが、 「指定されたファイルが見つかりません」 というメッセージが出てやはり削除できませんでした。 ちなみに、同じくデスクトップ内にある、 違うファイルやフォルダ(普通に削除できるもの)は、 コマンドプロンプトでもきちんと削除できました。 削除できないフォルダは、圧縮ファイルを解凍した時に自動的にできたものです。 同様にできたフォルダで、削除できたものと、できなかったものがいくつかあります。 OSはXPを使っています。 削除できないフォルダのアイコンで、 デスクトップが埋まってきてしまいました。 解決方法をご存知でしたらぜひ教えてください。 よろしくお願いします。

  • ファイルがどうしても削除できない

    2003のファイルサーバ上に作成されているファイルで、xxxxx.txt. (末尾がピリオド)のファイルが存在し、普通には削除できません。 過去ログ等を見て、以下の方法を試してみました ・フォルダ/ファイルの所有権をadministratorに変更して削除 ・ファイル削除ツール unlockerなど ・コマンドプロンプトから、del "\\?\ドライブ\フォルダ\ファイル名" ・同じ名前のテキストファイルを上書き どうやっても、だめです。 そもそも、そのサーバのコマンドプロンプトでは、削除できないファイルが表示されません。 エクスプローラー上では、表示されますが、隠しファイルみたいにアイコンが薄くなっており、 そのアイコンはwindowsのマークです。 悪さしているわけではないのですが、無用なファイルが残っているのもいやなので、削除して上げたいのですが、方法はありませんでしょうか? よろしくお願い致します。

  • エクセルの関数で画像ファイルを開く

    エクセル97をつかってます 任意の画像「ファイル名「99999999.tif」(99999999は任意)」があり そのファイル名をA列のセルに表示し、B列のハイパーリンク =HYPERLINK("C:\Users\フォルダ名\" & A2 & ".tif) をクリックすると開くようにしております。 ところが 開きたい画像名が「99999999-1.tif」というファイル名が まざっており、この場合”ファイルがありません”となり開くことができません。 (VBAでやれば簡単ですが、エクセル関数でやらなくてはならいので困っております) どちらでも開く関数がくめないでしょうか? 詳しいかた教えて下さい。

  • ファイルの削除ができない

    見覚えのないファイルが共有フォルダにあったので削除しようとしたのですが、削除できません。 コマンドプロンプトを試しても"アクセス拒否されました" セーフモードコマンドプロンプトを試しても同じ表示でした。 方法があったら教えてください。

  • 同じファイル名で違うフォルダーに格納するには?

    同じファイル名で違うフォルダーに格納するには? Excel VBAで、読み取りパスワードの付いたファイルを、読み取りパスワードを削除し同名ファイルで 違うフォルダーに格納するにはどうすればよいのでしょうか?

  • エクセルのファイルが削除できません。

    会社でエクセルのファイル(マクロ付き)が削除できなくて困っています。削除しようとすると「ライトプロテクトがかかっているか、ファイルを開いているか確認して下さい。」とメッセージが出ます。違うフォルダーへの移動も出来ません。名前の変更も出来ません。ファイルは開けますが、変更して上書き保存は出来ません。同名のコピーファイルがあるのでこのファイルを削除したいのです。まるで貼り付いているかの様に頑固に居座っているこのファイル(ブック)をなんとかできないものでしょうか?

このQ&Aのポイント
  • 製品名: EnjoyDVD
  • OS: Windows11
  • 問題詳細: ダウンロードページでダウンロードをクリックしてもファイル名を指定して実行のメッセージがでない
回答を見る

専門家に質問してみよう