2017-10-05 5 views
0

私は週末のワークシートをアーカイブする方法を理解しようとしています。毎週のワークシートを作成して、前の週のワークシートをアーカイブする

私のプロジェクトにはほとんど背景:

私は日常的に見直す日報の概要と計算を収容毎日二つの新しいワークシートを作成します。現時点では、1つのファイルを開くにはあまりにも多くのワークシートがありますので、開いて人に送るのは永遠にかかります。

最後に、先週作成したワークシートを別のファイルに保存する方法を知りたいと思います。私はこれらのすべてを別々の(1つの)ワークブックに保存したい、または何とかその週の毎日の各ワークブックを格納するためのフォルダを作成したいと思います。

たとえば、現在の週に10枚のワークシートを作成します(毎週2回、月〜金)。その後、私は次の月曜日に来て、その週のワークシートの作成を開始すると、古いシートは別のワークブックに入れられます。

私は現在、毎日のワークシートを作成するために使用するコード:

TD = Format(Date, "yyyy.mm.dd") 

On Error GoTo Make_Sheet 
    Sheets("Open_" & TD).Activate 

    Sheets("Open_" & TD).Select 
    Cells.Select 
    Selection.Delete Shift:=x1Up 
Exit Sub 

    Make_Sheet: 
     Worksheets.Add(After:=Sheets("Print")).Name = "Open_" & TD 
     ActiveSheet.Name = "Open_" & TD 

With ActiveWorkbook.Sheets("Open_" & TD).Tab 
    .Color = 5296274 
    .TintAndShade = 0 
End With 

それならば、コードは、現在の日付のワークシートは、すでに(ワークシートのタイトルとして日付を使用して)存在するかどうかを確認しますそれはそれをクリアしますか?それ以外の場合は、新しいワークシートが作成されます。また、タブを色分けします(毎日2つ作成するので)。私は2番目の毎日のワークシートを作成するための別のコードセットを持っています。ここでは、事前に

おかげで、

-Tuques

+0

それが遅くなり、そのすべてのものを 'Activate'sと' Select'sです。これらのものを使わないようにコードを再構成してください。例.. 'Cells.Delete Shift:= x1Up'は、selectを使って2行目と同じことをします。 – braX

+0

質問には関係ありませんが、 'Shift:= x1Up'を' Shift:= xlUp'に変更してください – YowE3K

答えて

0

は、新しいワークブックにすべてのシートをコピーして保存し、新しいブックを閉じるためのマクロです。最初のシートを除くすべてのシートを削除し、残りのシートの内容を消去します。 保存したいシートが不明です。

Sub New_week() 
NWeek = MsgBox("Is this the start of a new week?", vbYesNo + vbQuestion) 

    If NWeek = 6 Then 

     Dim fname As String 
     'Create new Workbook name. 
     'Add path if you want it in a specific folder 
    fname = "Week" & Format(Date, "yyyy_mm_dd") & ".XLSX" 
     'copy all sheets 
    Sheets.Copy 
     'save to new file 
     With ActiveWorkbook 
     .SaveAs FileName:=fname, FileFormat:=xlOpenXMLWorkbook 
     .Close SaveChanges:=False 
     End With 

    'Delete all sheets except first 
    Application.DisplayAlerts = False 
     Do While Worksheets.Count > 1 
     Worksheets(2).Delete 
     Loop 
    Application.DisplayAlerts = True 
    'Clear contents of first sheet 
    Sheets(1).UsedRange.Clear 

    End If 
関連する問題