创建每日工作表,存档前几周的工作表

时间:2017-10-05 19:19:50

标签: vba archive worksheet

我正在试图弄清楚如何存档一周的旧工作表。

我项目的一些背景知识:

我每天都会创建两个新的工作表,用于记录我每天查看的每日报告摘要和计算。截至目前,在一个excel文件中打开的工作表太多了,所以打开并发送给人们需要永远。

最后,我想弄清楚如何将上周创建的任何工作表保存到另一个文件中。我想将这些全部保存在单独的(单个)工作簿中,或以某种方式创建一个文件夹来存放每周工作簿的每一天。

例如,我为本周创建了10个工作表(每周的每一天,周一至周五)。然后,当我进入下一个星期一并开始创建该周的工作表时,旧的工作表将被放入另一个工作簿中。

我目前用于创建工作表的代码:

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个)。我有另一组相同的代码来创建第二个日常工作表。

提前致谢,

-Tuques

1 个答案:

答案 0 :(得分: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
相关问题