Excel VBAでフォルダ内の複数のファイルを一括削除する方法

このQ&Aのポイント
  • Excel VBAを使用して、フォルダ内にある複数のファイルを一度に削除する方法について教えてください。
  • ただし、削除してはいけないファイルもある場合の対処方法も教えてください。
  • また、変数を使わずに一括削除ができる方法についても知りたいです。
回答を見る
  • ベストアンサー

killステートメントで

お世話になります。 excelVBAで、フォルダ内にある殆どが共通性のない名前の ファイル数個を一度に削除するには、どう書けば良いのでしょうか? 但し、削除してはいけないファイルもあります。 これらはマクロ実行する度に作成される仮ファイルで、 確認のためにその都度削除せずに残してあります。 残った削除可能ファイル 11112.xls 22222.xls 33333.xls 44444.xls 55553.xls 削除不可ファイル 88888.xls dim scrp1 as string, scrp2 as string scrp1 = "C:\*2.xls" scrp2 = "C:\*3.xls" kill scrp1, scrp1, 88888.xls ↑わざわざ変数を使う必要もありませんが このような一気消しはできないのでしょうか? お手数おかけしますが、よろしくご教示下さい

  • OKBob
  • お礼率94% (97/103)

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

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

自分ならkillステートメントでワイルドカードは使用しません。 本当に自分の消したいファイルだけを消してくれるのかわかりませんから。 killステートメントは一つしか引数を認めてませんので、素直に kill "11112.xls" kill "22222.xls" .... と5行書くのが無難ではないかと。 ま、僕は数にもよりますが、For Each を使って以下のように書くのが好みです。 For Each f In Array("11112.xls", "22222.xls", "33333.xls")   Kill CStr(f) Next あと、Arrayの括弧の中は、いくらでも追加できます。 以上

OKBob
質問者

お礼

素早い回答ありがとうございました。 戴いた回答をベースに色々試してみましたが、結局思うように いきませんでしたので、毎回削除用フォルダを作成させた中に 保存させて、ワイルドカードで消すようにしました。 時間がなくて対話出来ませんでしたが感謝致します。。。

関連するQ&A

  • ExcelVBA変数等でのファイルのOpen方法

    ExcelVBAで、変数でのファイルのOpen方法を教えてください。 以下のフォルダ構造とします。 '////////////////////////////////////////////////////// マクロファイル.xls 1フォルダA  ∟1999ファイルA.xls  ∟2000ファイルA.xls  ∟2001ファイルA.xls  ∟2002ファイルA.xls  ∟2003ファイルA.xls  ∟2004ファイルA.xls ・・・ 2フォルダB  ∟1999ファイルB.xls  ∟2000ファイルB.xls  ∟2001ファイルB.xls  ∟2002ファイルB.xls  ∟2003ファイルB.xls  ∟2004ファイルB.xls ・・・ 3フォルダC  ∟結果ファイルC.xls '////////////////////////////////////////////////////// マクロファイル.xlsのシートにコンボボックスとボタンを配置します。 コンボボックスで【2001】を選択した場合は、 前後1年…合わせて合計3年分のファイルの「A5~A25」の値が、 「結果ファイルC.xls」にコピーされるようにしたいのです。 コピー内容や範囲が多く1つのプロシージャーに収まり切りませんでした。 そこで「結果ファイルC.xls」ファイルを1つめのプロシージャで開き、 2つめのプロシージャで残りの処理を実行しようとしたのですが、 変数、コンボボックスの値でのファイルを開く方法がわからず困っており、 どなたかお知恵をお貸し下さい。 以下のようなコードを書いてみましたがエラーとなりました。 '////////////////////////////////////////////////////// Dim vTgYear As Variant Dim myFLName1 As String, sWbkSubName1 As String Dim myFLName2 As String, sWbkSubName2 As String, SubName As String, vTgYear = ComboBox1.Value For i = -1 To 1 sWbkSubName1 = "3_フォルダC\結果ファイルC.xls" myFLName1 = ThisWorkbook.Path & sWbkSubName1 Workbooks.Open Filename:=myFLName1 SubName = "vTgYear + i & _ファイルA.xls" sWbkSubName2 = "1_フォルダA & SubName" myFLName2 = ThisWorkbook.Path & sWbkSubName1 Workbooks.Open Filename:=myFLName2 (実行コード中略) Next i '////////////////////////////////////////////////////// 今回はファイルの開き方だけなので、実行コードを省略させていただきました。 初歩的な質問かと思いますが、何卒お力をお貸しいただけますと幸いです。 よろしくお願い致します。

  • ファイルが見つからない時、スルーしたい。

    こちらで教えて頂いたVBマクロですが更に改善しファイルが見つからないときはスルーして 次のステップにいくようにしたいのですが?教えてください。 Sub Macro5() ' Macro5 Macro ' マクロ記録日 : 2012/9/12 ' Dim myPath As String myPath = ThisWorkbook.Path Kill myPath & "\A.xls" Kill myPath & "\B.xls" Kill myPath & "\B.ex_" End Sub

  • VBのKillについて

    皆様いつもお世話になっております。 質問なのですが VBの構文の一部で Dim strFilename as string strFilename = "C:\Temp\*.*" Kill strFilename とすると、指定したフォルダの中身が削除されるのですが、このフォルダ内に以下のpdfファイルを入れると、エラーが発生してしまいます。 テキストファイルで約同容量のファイルの削除も試み成功しました。 また、10KB程度のpdfファイルも削除できます。 何が原因かお分かりの方おりませんでしょうか? 【詳細】 ファイル名:J00932_4.pdf ファイルサイズ:8,531KB エラーメッセージ:パス名が無効です。 どうぞよろしくお願いします。

  • ExcelVBAマクロでGUIによるファイル名指定

    ExcelVBAマクロについて確認させてください。 下記のようにマクロのあるカレントフォルダに存在するファイルのなかから 読み込みたいファイルの名前を手入力してそれを変数aに読み込ませています。 ですが、この方法ですとユーザがいちいち手入力しなければならず、 ユーザ負担が大きいのと入力漏れおよび入力ミスが発生する恐れがあります。 そこで、マウスでファイルをクリックして指定するように基礎的な操作をマウスによって 行うGUIを作成したいのですが、ExcelVBAマクロで可能でしょうか。 あるいはExcelVBAに導入が可能なソフトウェアおよびそれが可能なソフトウェア があればぜひご教授ください。 以上、よろしくお願いいたします。 ---------------------------------- Sub sample() Dim FN As String Dim FullPathFileName1 As String Dim a As String FN = InputBox("読み込むファイル名を入力してください。(拡張子も含む。)") FullPathFileName1 = ThisWorkbook.Path & "\" & FN a = CreateObject("Scripting.FileSystemObject").GetFile(FullPathFileName1).OpenAsTextStream.Readall a = Replace(a, vbCrLf, "") '改行コードの削除 CreateObject("Scripting.FileSystemObject").GetFile(FullPathFileName1).OpenAsTextStream.Close End Sub

  • パターン処理(再度) vbscript

    excel VBA(vbscript) 質問1 文字変数Xを処理して変数yを求めるマクロコードのヒントを     (つまり.xlsを除き、続いて文字や_を取り去る) 質問2 文字変数Xを処理して変数zを求めるマクロコードのヒントを     (つまり文字のみを取り去る) (例)x=FILE20041211_1212system.xls    y=FILEsystem    z=20041211_1212.xls   上記に対して次の回答があり、満たします。 ANo.2 Sub test()  Dim x As String  Dim y As String  Dim z As String   x = "FILE20041211_1212system.xls"  With CreateObject("VBScript.RegEXP")       .Pattern = "^(\D*)(\d+\_\d+)(\D*)\b.xls\b$"       If .test(x) Then          y = .Replace(x, "$1") & .Replace(x, "$3")          z = .Replace(x, "$2") & ".xls"       End If       MsgBox x & vbLf & y & vbLf & z  End With End Sub (今回の質問)(例)x=FILE20041211_1212system.xlsにおいて "_"が実ははいらない場合もありまして、そのような例 x=FILE200412111212system.xlsにおいては、どのようにANo.2 Sub test()を変更すべきか。

  • エクセルマクロでファイルを開かず行をしらべたい

    こんにちは! エクセルマクロでファイルを開かず一番下の行を調べたいのですが、どうしたらよいでしょうか? 色々試行錯誤して、下記を組んでみましたが、上手くできませんでした。 test1のエクセルに下記のマクロを入れてあります。 C直下のtestフォルダの中のtest2.xlsのsheet1のファイルを読み込みたいです。 Dim line As Long Dim names As String names = "C:\test\[test2.xls]sheet1" line = ExecuteExcel4Macro("'" & names & "'!R1C1").End(xlUp).Row 「ファイルを開かず一番下の行を調べる」ことができれば、上記のマクロを動くようにするでも、別のマクロを提示するでも構いませんので、アドバイスのほどよろしくお願いいたします。

  • A1セル入力値をファイル名先頭に追加したい。

    マクロ初心者で色々な事例を組み合わせて次のマクロを 作成しました。 A.xlsを開いて一部加工したファイルをB.xlsで保存し さらに一部を消去しC.xlsで保存するマクロです。 今回、B.xlsおよびC.xlsの先頭にA.xlsのA1セルに入力 された6桁の数字を付加して保存したいのですが・・・。 例えばA1セルが123456の時は 123456B.xls 123456C.xls どなたか教えてください。 現在のマクロ Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 strFileName = "B" On Error Resume Next Workbooks(strFileName).Activate ThisWorkbook.SaveAs strFilePath & strFileName '◆個人情報消去 Range("D42:E49").Select Selection.ClearContents Range("d1").Select strFileName = "C" ThisWorkbook.SaveAs strFilePath & strFileName Application.Quit End Sub

  • EXCELのKill処理について質問です。

    EXCELのKill処理について質問です。 とあるフォルダに「test.csv」がある場合のみ その「test.csv」を削除する処理を作りたいのですが、 Dim Del_Dir as string Del_Dir = ThisWorkbook.Path & "\test\test.csv" if Del_Dir <> "" then kill Del_Dir end if 上記のようにすれば、「test.csv」は削除できるのですが、 もともとフォルダに存在しない場合、Elseの処理がどのようにすれば できるので悩んでおります。 ご教示お願いします

  • VB2008を使用していますが教えて下さい。

    VB2008を使用していますが教えて下さい。 VBからExcelブックを開く時に「マクロを有効にする」を選択する画面を表示させずに直接ユーザフォームを表示させて、ExcelVBAを利用したいのですが、どうしても上手く出来ません。いろいろネットで調べて試行しているのですが、どれもエラーになってしまいます。 現在下記の(1)(2)をExcelVBAの内容により使い分けをしています。助言方よろしくお願いします。 (1) この記述では「マクロを有効にする」は表示されず直接ユーザフォームが表示されます。ただ、VBA上で新たなExcel形式のファイルを出力させても画面上に表示されません。 ※Visible=True の記述で解消しそうですが分かりません。 Dim xlApp As Object = CreateObject("Excel.Application") Dim xlBooks As Object = xlApp.workbooks Dim xlBook As Object = xlBooks.Open(FileName:="c:test.xls") xlApp = Nothing xlBooks = Nothing xlBook = Nothing (2) この記述では「マクロを有効にする」を選択する画面が表示されてしまいます。ただ、ExcelVBA上で新たなExcel形式のファイルを出力できます。 Dim proc As New Process() proc.StartInfo.FileName = "c:test.xls" proc.Start() proc = Nothing

  • excelのデータをvbにとりこむ

    excelのあるセルのデータを取り込みたいのですが、 どうすればよいでしょうか? C:\123.xlsというファイルのsheet1の (2,4)というセルにある実数型のデータを 出力するという、意図です。 Private Sub Setting_Click() Dim xls As Object Dim xlsFilename As String Dim xlsSheetname As String xlsFilename = "C:\123.xls" xlsSheetname = "Sheet1" Set xls = CreateObject("Excel.Application") xls.Application.Visible = False xls.Application.Workbooks.Open xlsFilename Dim r1 As Double r1 = xls.Application.Workbooks.cells(2, 4).Value Print r1 end sub

専門家に質問してみよう