|
▼ヒロ さん:
>シートの枚数がどんどん増えていくので、手動で削除しています。
>
>シート名を日付にしているので、バックアップ時の日付より10日ぐらい
>以前のシートを削除する方法を教えていただけませんでしょうか?
提示コードからできるだけSelectを無くし、
変数を使うようにしてみました。
(検証してませんので ダミーのBookで試してください)
Sub SheetCopy()
Dim WS1 As Worksheet
Dim ws2 As Worksheet
Dim WB2 As Workbook
Dim dName As String
Dim RemoveDate As Date 'この日付以前のシートを削除
Dim i As Long
Dim ss As String
dName = Format$(Date, "yy-mm-dd") '01-02-14
Set WS1 = ThisWorkbook.Worksheets("運送DATA")
If IsEmpty(WS1.Range("A2").Value) Then '▼変更
MsgBox "A2セルに値がありません"
Exit Sub '▼追加
End If
On Error Resume Next
Set WB2 = Workbooks.Open( _
ThisWorkbook.Path & "\Backup.xls")
On Error GoTo 0
If WB2 Is Nothing Then
MsgBox "BackUp.xls ファイルがありません"
Exit Sub
End If
Application.ScreenUpdating = False
'本日のシートに転記
On Error Resume Next
Set ws2 = WB2.Worksheets(dName)
On Error GoTo 0
If ws2 Is Nothing Then '★シートが見つからなかったとき
Set ws2 = ActiveWorkbook.Worksheets.Add
ws2.Name = dName
End If
'-------------- 古いシートの削除 ---------- 今回 追加部分
Application.DisplayAlerts = False
RemoveDate = Date - 10 '★10日前
On Error Resume Next
With WB2.Worksheets
For i = .Count To 1 Step -1
ss = .Item(i).Name
If IsDate(ss) Then
If CDate(ss) <= RemoveDate Then
.Item(i).Delete
End If
End If
Next
End With
On Error GoTo 0
Application.DisplayAlerts = True
ws2.Activate
WS1.UsedRange.Copy ws2.Cells(1) '▼変更
ws2.Range("A2").Select
ActiveWindow.Zoom = 85
WB2.Save '上書き
WB2.Close '閉じる
Application.ScreenUpdating = True
End Sub
|
|