Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


19160 / 76734 ←次へ | 前へ→

【63010】Re:古いシートの削除
発言  kanabun  - 09/9/30(水) 21:32 -

引用なし
パスワード
   ▼ヒロ さん:

>シートの枚数がどんどん増えていくので、手動で削除しています。
>
>シート名を日付にしているので、バックアップ時の日付より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
2 hits

【63005】古いシートの削除 ヒロ 09/9/30(水) 19:14 質問
【63010】Re:古いシートの削除 kanabun 09/9/30(水) 21:32 発言
【63011】Re:古いシートの削除 kanabun 09/9/30(水) 21:54 発言
【63012】Re:古いシートの削除 ヒロ 09/9/30(水) 22:30 お礼

19160 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free