• ベストアンサー

【Excel VBA】古いファイルを削除する

Excel2003を使用しています。 ファイルを保存する際に、ファイル名の後に日付を入れて保存したく、下記のようにコードを書きました。 それで、保存するときに、古いファイルは削除するようにしたいのですが、どのようにコードを追加すればいいでしょうか? Killを使用するのかな~?とは思っているのですが。。。 よろしくお願いします。 -------------------------------------------------- Sub 保存()   ActiveWorkbook.SaveAs _    "C:\○○\××" & Format(Date, "yyyymmdd") & ".xls" End Sub

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

こんな感じでしょうか? Sub test() tbn = ThisWorkbook.FullName ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\○○○\××\" & Format(Date, "yyyymmdd") & ".xls" Kill tbn End Sub

rx-z5815
質問者

お礼

回答ありがとうございます。 教えていただいたコードを参考にさせていただき、さらに条件(日付が同じ場合は削除しない)を 加えることで、希望通りのことができました。 ありがとうございました。

その他の回答 (3)

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

>古いファイルは削除するよ・・・ プログラムを組もうとする人が、「古い」というようなあいまいな言い方をしていてどうする。 上書き保存してはどうですか 1度だけ前のファイルは保存してある場合 何かの事情でXXyyyymmddの名前のファイルが溜まっていて それらを一掃する などごれですか。基本的には限定したフォルダなりの中のエクセルブックを全部調べて(注)、チェックし、条件に外れるものは削除なんでしょう。 (注)WEBでコード例アリ。 「フォルダ Dir」で照会 http://www.accessclub.jp/samplefile/samplefile_209.htm 他多数 「VBSCRIPT フォルダ」で照会 http://www.atmarkit.co.jp/fwin2k/operation/wsh11/wsh11_01.html 他多数

rx-z5815
質問者

お礼

アドバイスありがとうございます。 “古い”という表現がわかりづらくしたようで、申し訳ありません。 ANo.1の方のお礼欄にも書かせていただきましたが、マクロを実行するとファイルが増えていくので、更新前のファイルは、その都度削除したかったのです。 おかげさまで、ANo.3の方からのご回答を参考にさせていただき、希望通りのことができました。 お手数をおかけしました。

回答No.2

消す前に、ActiveWorkbook.Nameで今のファイル名を取得しておいては いかがでしょうか? んで、今のファイルと新しく保存するファイルが違う場合(別の日付で更新した場合)のみ、過去のファイルを削除。 Sub 保存() Dim myfile As String Dim newname As String Dim pass As String myfile = ActiveWorkbook.Name newname = Format(Date, "yyyymmdd") & ".xls" pass = "C:\○○\××" ActiveWorkbook.SaveAs _ pass & newname If newname <> mayfile Then Kill pass & myfile End If End Sub

rx-z5815
質問者

お礼

回答ありがとうございます。 記載していただいたコードを参考にさせていただき、希望通りのことができました。 ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

”古い”がどの位を差すのかわからないですが、 過去に回答した事のある http://okwave.jp/qa3659813.html とかは、参考になりませんか?

rx-z5815
質問者

お礼

回答ありがとうございます。 “古い”という表現がわかりづらかったようで、申し訳ありません。 ファイルを更新したら、更新前のファイルを削除したかったのです。 質問文に記載しているコードだけでは、マクロを実行する度に、ファイルが増えるので、“古い”ファイルは削除するようにと書いてしまいました…。 教えていただいたURL、参考になりました。 ありがとうございました。

関連するQ&A

  • VBAでVBAを削除?

    作業中のブックから一枚のシートを以下のSub 別ファイル保存()プロシージャで別のブックとして保存します。それはうまくいったのですが、この元になるシートには Private Sub Worksheet_SelectionChange(ByVal Target As Range) '途中略 End Sub と Private Sub Worksheet_Deactivate() '途中略 End Sub の二つのVBAが記述してあり、これまで一緒に別のブックに入ってしまいます。 これを防ぐにはどのようにすればよいのでしょうか? Sub 別ファイル保存() mypath = ThisWorkbook.Path fn = Sheets("Declarations").Range("H15").Value & Format(Date, "yymmdd") ffn = mypath & "\" & fn & ".xls" Sheets("Declarations").Copy ActiveWorkbook.SaveAs Filename:=ffn ActiveWorkbook.Close End Sub

  • マクロExcel2003日付を付けてファイルを保存

    Excel2003でマクロを利用して、日付を付けた形でファイルを保存するようにしたいです。 条件としては、 (1)ファイルをz:\に「【ここに日付を八桁で保存】File1.xls」とする 例えば、20111127File1.xls (2)上書きする場合も、確認をせずに強制的に保存 (3)保存が終わったら、強制的にExcel2003を終了する という具合に書きたいです。 マクロの保存でやってみてわかっている所まで書きました。 Sub SaveEnd() ActiveWorkbook.SaveAs Filename:="Z:\【????】file1.xls", FileFormat:=xlNormal   【上書き保存で、確認をしない】   【Excel2003の強制終了】 End Sub どのように調べれば良いかも含めて、ご指導をいただければ幸いです。

  • VBAでも新規ファイル作成

    Excel2003です。 下記のコードであるシートを別ファイルにして保存するコードを書いています。ただ、このコードでは、コピー元のシートにExcel関数が入っているために、出来上がった新規ファイルを開くときに常に”リンクの更新”を聞かれてしまいます。リンクの更新をする必要はないのでファイルを開くたびに”更新しない”を選択してもよいのですが、初めからこの”リンクの更新”メッセージが出ないようにするには何か良い手立てはないでしょうか? ------------------------------------------------------------- Sub ファイル作成() '報告書を"名前を付けて保存" Sheets("Sheet1").Select Dim 既定ファイル名 As String Dim 保存ファイル名 As Variant 既定ファイル名 = "新規報告書" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls") If 保存ファイル名 = False Then MsgBox "保存は中止されました。" Sheets("Sheet1").Select Else With ThisWorkbook.ActiveSheet Workbooks.Add .Copy After:=ActiveWorkbook.Sheets(1) Application.DisplayAlerts = False ActiveWorkbook.Sheets(1).Delete Application.DisplayAlerts = True ActiveWorkbook.SaveAs 保存ファイル名, xlNormal ActiveWorkbook.Close False End With Sheets("Sheet1").Select End If End Sub ---------------------------------------------------------------

  • Excel2007VBAシートコピーとマクロ保存

    ●質問の主旨 複数のシートのファイルにおいて最終シートだけをコピーし、 かつそのファイルの標準モジュールも含んだファイルを保存するには、 下記のコードをどのように書き換えたらいいでしょうか? ご存知のかたご教示願います。 ●コード Sub 保存() Dim flname As String flname = "D:\医療週報\VBA試作\" & Format(Date, "yyyy年mm月") & ".xlsx" ActiveSheet.Copy ActiveWorkbook.SaveAs flname ActiveWorkbook.Close End Sub ●質問の補足 1)マクロで「保存」を実行するときは手作業で必ず最終ページを開いています(アクティブにします)。 2)上記コードのうち".xlsx"では最終シートだけをコピーできますが、 マクロの保存ができません。また".xlsm"にするとエラーが出ます。 ".xls"にすると複数のシートが全てコピーされた上に、マクロの保存ができていません。 3)私はVBA初心者です。

  • VBAの印刷について

    VBAでの質問です。 ある処理を施したあとにページ設定をして印刷するプログラムを作成しているのですが、なぜか同じものが2枚出力されてしまいます。 1枚だけ指定して印刷するにはどのようにコードを書けば良いかどなたか教えて下さい。お願いします。 With ActiveSheet.PageSetup 'ページ詳細設定 .PaperSize = xlPaperA4 .Zoom = False .FitToPagesTall = 1       .FitToPagesWide = 1     End With 'ActiveSheet.PrintOut Worksheets(sheetname5).PrintOut ActiveWorkbook.SaveAs Filename:=takiicode & "_" & Format(today, "yyyymmdd") & ".xls" '保存) Workbooks(takiicode & "_" & Format(today, "yyyymmdd") & ".xls").Close SaveChanges:=True '終了

  • excel VBA コピーファイルのマクロ削除

    下記3つの、プロシージャを組み合わせて、下記のやりたいことをやりたいのですが、うまくいきません。 どうかご教授の程よろしくお願いいたします。 excelは2000です。 ○やりたいこと 今現在開いているファイルの、コピーをデスクトップに保存して、その保存したブックのマクロ(標準モジュールと、コマンドボタン)を削除したい。 ○自分でやろうとすると コピーをデスクトップに保存すると、コピー元のファイルが勝手に閉じてしまい、コピー先のファイルのマクロを削除できない。 '■デスクトップにコピー保存 Sub copysave() Dim 場所 As String 場所 = CreateObject("WScript.Shell").SpecialFolders("Desktop") ActiveWorkbook.SaveAs Filename:=場所 & "\" & Format(Date, "yyyymmdd") & "○◆△.xls" End Sub '■標準モジュールの削除 Sub DelModule() Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module1") Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module2") End Sub '■CommandButtonの削除 Sub DelCommandButton() Dim c As Excel.OLEObject For Each c In Worksheets(1).OLEObjects   If TypeOf c.Object Is Msforms.CommandButton Then c.Delete End If Next End Sub

  • VBAでフォルダにあるエクセルファイルを開く

    こんにちは このコードがうまく動かないのですが、 どこがいけないのかわからなく助けてください。 なおフォルダの中には******データ.xlsと言うファイルがあり、アスタリスク部分は日付が不規則に変化して上書きされるのです。 このファイルを開くマクロを作りたいのですが。 うまく行きません。 よろしくおねがいします。 Sub excelopen() ' ' Dim エクセル As String 'エクセル = Dir(ActiveWorkbook.Path & "\*データ.XLS") If エクセル = "" Then Exit Sub エクセル = ActiveWorkbook.Path & "\" & エクセル Workbooks.Open Filename:=エクセル End Sub

  • ファイルの別名保存の方法

    こんにちは。 Excelの素人です。blg.を参考に、ファイルの別名保存ボタンを作りましたが、別名保存後うまく終了してくれません。 現象は終了マクロから名前をつけて保存してもファイルが終了しません。もう一度ボタンをクリックするといきなり終了します。 素人の悲しさで、どこを修正すればよいのか悩んでいます。 Sub 別名保存後終了() If ThisWorkbook.Saved = False Then strFilename = ThisWorkbook.Path & "\" & _ "データ作成" & "_" & _ Format(Date, "yyyymmdd") & ".xls" strFilename = Application.GetSaveAsFilename( _ FileFilter:="Excelファイル,*.xls", _ InitialFileName:=strFilename, _ Title:="Excelファイルの保存") If strFilename = "False" Then If MsgBox("保存せずに終了します。よろしいですか?", _ vbOKCancel + vbInformation, _ "終了確認") = vbOK Then ThisWorkbook.Saved = True ThisWorkbook.Close Else Exit Sub End If Else ActiveWorkbook.SaveAs strFilename End If Else ThisWorkbook.Close End If End Sub 宜しくお願いします。

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • VBA 新規作成したファイルを開くときにエラー

    すみません、助けてください。 Excel 2007のVBAでActiveWorkbook.SaveAsを使って 新規にExcelファイルを生成するものを作成しているのですが、 新たに作成したExcelファイルを開くときにエラー(警告)が出てしまいます。 (ファイル自体は開けるのですが。。。) ソースは以下です。 ------------------------------------------------------------ ' シート枚数を指定 Application.SheetsInNewWorkbook = 3 Workbooks.Add ' 上書き保存 Application.DisplayAlerts = False ' ファイル名を指定して保存 ActiveWorkbook.SaveAs (ThisWorkbook.Path + "\" + "新しいファイル.xls")

専門家に質問してみよう