Option Explicit '- http://web.fpso.jp '- 勝手に改変及び配布しちゃってください '--- 変数宣言 --- Dim stBackupfolder Dim stFiles Dim iAliveDay 'Dim objWshShell Dim objFSO, objFolder Dim stTime Dim iyn Dim i '--- 変数設定 --- 'バックアップを取るフォルダ stBackupfolder = "C:\excel2htmltable\backup\" 'バックアップを取るファイル stFiles = Array("C:\excel2htmltable\Excel2HTMLTABLE.xls") 'バックアップを残す日数 iAliveDay = 30 '--- if right(stBackupfolder,1) <> "\" then stBackupfolder = stBackupfolder & "\" end if '--- 必要オブジェクト作成 --- Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 'Set objWshShell = WScript.CreateObject("WScript.Shell") '--- 現、タイムスタンプ確保 --- stTime = m_getStamp(now()) '--- バックアップフォルダのチェック及び作成 --- if not objFSO.FolderExists(stBackupfolder) then iyn = msgbox(stBackupfolder & "を作成しますか?",vbYesNo+vbDefaultButton2,"確認メッセージ") if iyn = vbNo then msgbox "処理を中止します",,"確認メッセージ" WScript.Quit end if objFSO.CreateFolder(stBackupfolder) end if '--- バックアップ --- Dim stBase Dim stExt Dim stBackupFile for i = lbound(stFiles) to ubound(stFiles) '--- バックアップ後のファイル名作成 --- stBase = objFSO.GetBaseName(stFiles(i)) stExt = objFSO.GetExtensionName(stFiles(i)) stBackupFile = stBackupfolder & stBase & stTime & "." & stExt '--- バックアップ後のファイル名と同じものが既に存在したら終了 --- if objFSO.FileExists(stBackupFile) then msgbox stBackupFile & "は既に存在します" & vbCrLf & "バックアップを終了します",,"確認メッセージ" WScript.Quit end if '--- ファイルをコピー --- objFSO.CopyFile stFiles(i),stBackupFile next '--- 以前のファイルを削除 --- Dim objFile Dim stFileTime stTime = m_getStamp(dateadd("d",- iAliveDay, now())) Set objFolder = objFSO.GetFolder(stBackupfolder) For Each objFile in objFolder.files '--- ファイル名からバックアップ時間を取得 stFileTime = right(objFSO.GetBaseName(objFile.Name),len(stTime)) '--- バックアップ時間を比較し、古ければ削除 --- if isNumeric(stFileTime) then if CCur(stFileTime) < CCur(stTime) then objFile.Delete end if end if next 'Set objWshShell = Nothing Set objFSO = Nothing private function m_getStamp(time) Dim stamp stamp = year(time) stamp = stamp*100 + month(time) stamp = stamp*100 + day(time) stamp = stamp*100 + hour(time) stamp = stamp*100 + Minute(time) stamp = stamp*100 + Second(time) m_getStamp = stamp end function